####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无关。跨域