promise

作者: 木子川页心 | 来源:发表于2018-10-14 10:59 被阅读11次

    一、 Promise对象有三种状态,他们分别是:

    pending: 等待中,或者进行中,表示还没有得到结果
    resolved(Fulfilled): 已经完成,表示得到了我们想要的结果,可以继续往下执行
    rejected: 也表示得到结果,但是由于结果并非我们所愿,因此拒绝执行
    

    这三种状态不受外界影响,而且状态只能从pending改变为resolved或者rejected,并且不可逆。在Promise对象的构造函数中,将一个函数作为第一个参数。而这个函数,就是用来处理Promise的状态变化。
    二、 Promise对象中的then方法,可以接收构造函数中处理的状态变化,并分别对应执行。then方法有2个参数,第一个函数接收resolved状态的执行,第二个参数接收reject状态的执行。

    图片.png

    then方法的执行结果也会返回一个Promise对象。因此我们可以进行then的链式执行,这也是解决回调地狱的主要方式。


    图片.png
    then(null, function() {}) 就等同于catch(function() {})
    

    三、Promise中的数据传递

    图片.png

    四、Promise.all

    当有一个ajax请求,它的参数需要另外2个甚至更多请求都有返回结果之后才能确定,那么这个时候,就需要用到Promise.all来帮助我们应对这个场景。

    Promise.all接收一个Promise对象组成的数组作为参数,当这个数组所有的Promise对象状态都变成resolved或者rejected的时候,它才会去调用then方法。

    图片.png

    五、 Promise.race

    与Promise.all相似的是,Promise.race都是以一个Promise对象组成的数组作为参数,不同的是,只要当数组中的其中一个Promsie状态变成resolved或者rejected时,就可以调用.then方法了。而传递给then方法的值也会有所不同,大家可以再浏览器中运行下面的例子与上面的例子进行对比。

    图片.png

    相关文章

      网友评论

          本文标题:promise

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