promise

1、写法

let pro = new Promise(function(resolve,reject){

 if(true){ // 异步操作成功

resolve(value)

} else {

reject(value)

}

})

Promise用是构成函数用new创建,传入一个函数作为参数,函数里面的参数有两个函数一个成功调用的,一个是失败调用的。无论是成功还是失败都会通过这两个函数(resolve)传出去

(所以let {} | []= await 函数 =>再asyn函数可以接受传递出来的数据用各种解构) 

2、then()

then()可以获取promise返回的数据根据不同状态调用第一个(成功调用fulled),第二个(失败调用rejected)

3、catch(function() {}) 可直接连接符,执行也是返回promise,等于then(null,rej() {})或者then(undefine,rej => ())

一般都不在then用reject回调函数也就是第二个函数,一个是promise会吃掉内部的错误,没有catch它外抛,没人接受,第二个它返回的是promise后面还可以接then方法

promise的状态是不会改变的,如果内部调用了resolve()后面的代码不好执行了

4、finally(),里面有一个回调函数不接受任务参数,无论是fulled还是rejeced会都执行的内容的放置地方。看单词也能看的出来最终要干嘛。

5、all(参数),参数只要具有iteration接口类型的都可以,先把参数不是promise的用promise.resolve()转为promise。如果参数的promise全部都是fulfilled,那会一直数组形式返回所有promise的值,如果有一个是reject,那它的状态就是reject了,也就是如果后面接then()就执行第二回调,并且回调函数的参数是reject返回的值。all()可以有在不是继发的异步中,需要返回异步的放回值

5、race(参数),参数一样,但是执行返回的状态不一样,它是有参数promise最先返回的状态决定的。

6、allsettled(参数)参数是promise实例数组,它的效果是参数都执行完,的操作,如果是fulfilled还是rejected。都执行类似返回的是fulfiled,所以用。then()链接的的时候执行的是第一个成功的函数,它会已对象的【{value:返回值,statue:rejecedt}】形式,把执行参数promise的结果和状态已数组对象的形式,返回给。then()第一个回调函数当参数

7、any(参数)参promise实例,如果只要参数实例有一个fulfilled,状态就是fulfilled,跟race()函数不会因为第一个参数返回的状态结束后面参数promised的执行。如果所有的参数promise返回都是rejected 它的状态rejected

8、resolve(参数)如果参数是promse对象,原封不动返回,如果是有thenable对象(也就是then方法的对象)将这个对象转为 Promise 对象,然后就立即执行thenable对象的then()方法返回,参数不是具有then()方法的对象,或根本就不是对象

9、reject()

 

posted @ 2020-09-15 16:18  无用之美  阅读(117)  评论(0)    收藏  举报