ES6之Promise对象

2017-04-02  本文已影响0人  芒僧

能够用到很多异步处理的回调函数之中,而且支持链式调用,主要是pending/resolved/rejected这三个状态。

创建Promise对象

let myObj = new Promise(fucntion(resolve,reject){})

里面可以改变promise的状态

通过resolve(data)表示进程成功

通过reject(error)表示进程失败

回调函数

then方法支持两个回调函数,第一个是接受来自resolved里的数据,第二个是接受rejected里的数据,做回调函数处理

``

    let myFunc = function(){
            let helo = new Promise(function(resolve,reject){
            if()
                resolve(data);
            if()
                reject(error);
        })
        
        return helo //千万记得return出去,不然外面没监听到
    }
    
    myFunc().then(function(data){..},funcion(error){})
    //支持链式调用,可以在then再次调用then,第二个then会接受第一个then里面的函数值作为参数逐步往下
    //可以将其看作一个二叉树 一边是resolved,一边是rejected

错误捕捉

catch()then(null,function(){})的别名,用于指定发生错误时的回调函数

可以在Promise对象中 throw new Error('wrong code'),然后在catch()中可以wrong code被捕捉到

包装多个Promise

Promise.all(promise1,promise2,promise3) 必须等到多个Promise对象的状态均改变后,Promise.all才会改变状态

Promise.race(p1,p2,p3) 当一个Promise对象改变后,Promise.race()的状态就会改变

改造为Promise对象

let hello =  promise.resolve();
...
p.then(()=>{
    ...your code
})

同理 可以使用 p.catch()
常用链式调用
--

.done() done方法处于回调链的尾端,保证抛出任何可能出现的错误

.finally()用于指定不管Promise对象最后状态如何都会执行的操作,可用于清除变量或者做一些善后的操作

上一篇下一篇

猜你喜欢

热点阅读