简单的jsonp实现promise

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

相关文章
相关标签/搜索