美文网首页JS
Promise常用的方法

Promise常用的方法

作者: 沃德麻鸭 | 来源:发表于2021-10-15 12:59 被阅读0次

一、什么是Promise?

Promise是异步编程的一种解决方案,将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数,是为了解决异步处理回调地狱而产生的

Promise构造函数是同步执行的,then 方法是异步执行的,所以Promise创建后里面的函数会立即执行,构造函数中的resolve和reject只有第一次执行有效,,也就是说Promise状态一旦改变就不能再变

async函数返回一个Promise对象,可以使用then方法添加回调函数,函数内部使用await来表示异步,async函数只有从await向下才是异步的开始

它有三个状态pedding:初始状态,既不代表成功也不代表失败

                         fulfilled:成功状态

                         rejected:失败的状态

两个过程:pedding---->fulfilled、pedding---->rejected

缺点:

无法取消Promise,一旦新建它就会立即执行,无法中途取消。

②如果不设置回调函数,promise内部抛出的错误,不会反应到外部。

③当处于pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。

二、Promies的静态方法

1.Promise.resolve()函数被执行时, 会将promise的状态从 pending 改成 fulfilled 成功

2.Promise.reject()函数被执行时, 会将promise的状态从pending 改成 rejected 失败

new Promise((resolve, reject) => {

reject()     //Promise.reject()---->  rejected 失败 

//  resolve()  Promise.resolve()----->fulfilled 成功

})

3.Promise.all([promise1, promise2, promise3]) 等待原则, 是在所有promise都完成后执行, 可以用于处理一些并发的任务,如果Promise实例都进入Fulfilled状态,Promise.all返回的实例才会变成Fulfilled状态并将Promise实实例数组的所有返回值组成一个数组,传给Promise.all返回实例的回调函数;如果有某一个或者多个实例进入rejected状态,Promise.all返回的实例会立即变成Rejected状态并将第一个rejected的实例返回值传递给Promise.all返回实例的回调函数。

应用场景

4.Promise.race([promise1, promise2, promise3]) 赛跑, 竞速原则, 只要三个promise中有一个满足条件, 就会执行.then(用的较少),先执行到成功就返回成功的状态,返回失败就是失败状态

三、Promise的实例方法

1.Promise.then(),此方法接收两个参数onResolve和onReject,分别代表当前Promise对象的成功和失败

2.Promise.catch(),当pedding变为rejected时会进入catch,来对错误进行处理

四、reject和catch处理上有什么不同?

①reject是用来抛出异常,catch用来处理异常

②reject是Promise的方法,而catch是Promise实例的方法

③reject后面的东西一定会进入.then中的第二个回调,如果then中没有写第二个回调,则进入catch

④网络异常,会直接进入catch而不会进入then的第二个回调

五、手写一个Promise

//Promise构造函数的两个方法resolve,reject,分别代表成功和失败

var Promise=new Promise((resolve,reject)=>{

if(操作成功){

resolve(value)

}else{

reject(error)

)

// .then第一个回调执行成功回调,第二个是失败回调

Promise.then( function (value) {

//成功 },function(value){

//失败 } )

相关文章

网友评论

    本文标题:Promise常用的方法

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