美文网首页
ES6之Promise对象

ES6之Promise对象

作者: 芒僧 | 来源:发表于2017-04-02 11:33 被阅读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对象最后状态如何都会执行的操作,可用于清除变量或者做一些善后的操作

    相关文章

      网友评论

          本文标题:ES6之Promise对象

          本文链接:https://www.haomeiwen.com/subject/uhhgottx.html