promise的使用

157 阅读1分钟

概念


  1. Promise是什么?

     promise可以把异步编程同步化。
     有了peomise就避免了层层嵌套的回调函数,也就是说解决了回调地狱问题。
     promise有三种状态,pending(进行中)、resolve(成功回调)、rejected(失败回调)。
     promise对象的状态改变,只有两种可能:从pending变为fulfilled,从pending变为rejected。
    
  2. Promise也有一些缺点。

     首先,无法取消Promise,一旦新建它就会立即执行,无法中途取消。
     其次,如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。
     第三,当处于pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。
    

Promise的用法

//封装Promise
function createPromise(url){
    return new Promise(function(resolve,reject){
        $.ajax({
            url: url,
            success:function(response){
                resolve(response)  //返回数据
            },
            error:function(error){
                reject(error)
            }
        })
    });
}
//用async和await
async function get() {
    let data = await createPromise("./data/sheng.txt");
    let data2 = await createPromise("./data/shi.txt");
    let data3 = await createPromise("./data/xian.txt");
    console.log(data)
    console.log(data2)
    console.log(data3)
}