Promise

作者: c菜鸟 | 来源:发表于2018-03-09 21:31 被阅读0次

    promise有俩个特点就:

    1 对象的状态不受外界影响, 只有一步操作的结果决定状态其他操作不会影响这个状态

    2 一旦状态改变就不会在变了,一般promise状态有俩中可能就是第一种就是从进行中变为成功,第二种就是从进行中变为失败

    一般的用法就是如下用法

    const promise = new Promise(function(resolve, reject){

        If(异步操作成功)

        resolve();

        else

        reject();

    })

    但是更长用的写法是用then,如下  

    var promise = new Promise(function(resolve, reject){

    console.log('success');

    resolve('hello world');

    });

    promise.then(function(msg){

       console.log(msg); //这个msg就是在resolve函数中传进来的参数

    }, function(){

    });

    以上的then()函数中传进来的俩个函数,一个函数是promise变为成功时调用第一个,promise状态变为失败时调用第二个函数

    *****一个重要的问题******

    就是在项目中运用promise时应该注意就是因为promise创建就会立即执行,所以首先new Promise()中的一些语句会被执行,但是因为promise.then()是异步操作,所以会等一些其他的同步操作结束后then中的函数才会被执行

    ******第二个重要的问题******

    resolve()中的参数不仅可以传递一个参数,还可以是另一个promise,例如一个promise是p1,另一个promise是p2,在第二个new Promise()中有这么一条语句就是resolve(p1),那么这个时候就是p1的状态决定着p2的状态

    .then可以采用链式的方法以同步的方法来写,为什么then可以采用链式,是因为.then方法返回的是一个promise,后一个then要看前一个then返回的状态

    .catch方法就是promise变为失败时调用的,promise对象的错误具有冒泡的性质,会一直向后传播,直到被捕获为止。

    .finally方法不管promise执行的成功或者失败,它都会执行

    promise.all()它的用法就是var p = Promise.all(p1, p2, p3)只有三个promise都变为成功时,p的状态才能变为成功,如果有一个为reject那么all()返回第一个reject的promise实例

    Promise.resolve()将现有对象转为Promise对象

    相关文章

      网友评论

          本文标题:Promise

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