####jsonp 跨域请求的一种方式
####promise 一种实现异步编程的方式
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无关。