####jsonp 跨域請求的一種方式編程
####promise 一種實現異步編程的方式json
function p(url){ let json; let s = document.createElement('script'); s.src = url + '?callback=fn'; window.fn = function(data){ json = data; } //當script被插入文檔中時,src中的資源就會開始加載 document.body.appendChild(s); return new Promise((resolve,reject)=>{ /* throw('err in promise'); */ s.onload = function(e){ resolve(json); } s.onerror = function(){ reject(json); } }); } p('http://localhost:8082').then(data=>{ console.log(data); throw('err before then'); }).catch(err => { //能夠捕捉到then裏的err befor then也能夠捕捉到new Promise裏的err in promise。 console.log(err) });
可是s.onload中的回調函數若是拋出錯誤的話,不能被p.catch捕獲到。由於onload的回調函數中的異常和promise無關。跨域