promise 对象

2018-07-17  本文已影响0人  vavid

用来获取异步操作的结果。
异步操作的三种状态:pending(进行中)、fulfill(已成功)、rejected(已失败)。
Promise状态的变化的两种状态:pending --> fulfill 或者 pending --> rejected。这两种情况发生,状态即凝固,称为 resolved (已经定型)。
基本用法:

        const promise = new Promise((resolve, reject) => {
                // ... 异步操作代码 
                // 成功 res
                // 失败信息 err
                if(/* 操作成功*/){
                      resolve(res);
                }else{
                       reject(err)
                }
        }) 

promise 实例生成之后,可以用 then 方法指定 resolved 的状态 或者 rejected 的状态的回调函数

        promise.then(function(){
            // success
        },function(){
             // error
        })

1.一个简单的Promise对象的例子

    function timeout(ms){
        return new Promise((resolve, reject) => {
            setTimeout( resolve, ms, 'done');
        });
    }
    timeout(100).then((value) => {
        console.log(value);
    })

2.利用Promise.all合并多个异步请求

        const p1 = new Promise((resolve, reject) => {
                // ... 异步操作代码
                resolve('a')
        })
        const p2 = new Promise((resolve, reject) => {
                // ... 异步操作代码
                resolve('b')
        })
        Promise.all([p1,p2]).then(result=>{
             // result: ['a', 'b']    
             // 其它操作      
        })
上一篇 下一篇

猜你喜欢

热点阅读