7.关于promise 的理解(简单代码)

2021-11-04  本文已影响0人  陈情令

解释:上述构造方法中的两个参数resolve, reject即是改变promise的状态,resolve 方法把 Promise 的状态置为完成态(Resolved),这时 then 方法就能捕捉到变化,并执行“成功”情况的回调,resolve, reject可抛出结果,作为then方法中函数的参数。then可接受两个参数,第一个处理Resolved状态的函数,第二个处理Rejected函数。如果只想处理成功,或者失败,对应参数可设置为null,只有一个参数则表示状态改变就执行,不区分状态结果。

另外

catch()方法,它可以和 then 的第二个参数一样,用来指定 reject 的回调,另一个作用是,当执行 resolve 的回调(也就是上面 then 中的第一个参数)时,如果抛出异常了(代码出错了),那么也不会报错卡死 js,而是会进到这个 catch 方法中。

all()方法,Promise 的 all 方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后才执行回调, 会把所有异步操作的结果放进一个数组中传给 then。

race()方法,race 按字面解释,就是赛跑的意思。race 的用法与 all 一样,只不过 all 是等所有异步操作都执行完毕后才执行 then 回调。而 race 的话只要有一个异步操作执行完毕,就立刻执行 then 回调。

注意:其它没有执行完毕的异步操作仍然会继续执行,而不是停止。

function cook(){ 

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

      resolve( console.log("做饭")  )

     })

       return p

    }

    function resh(){

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

      resolve(console.log("洗洗睡吧") )

     })

      return p

    }

   function dapp(){

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

      resolve(console.log("吹泡泡"))

     })

     return p

   }

   cook().then(dapp()).then(resh())

上一篇下一篇

猜你喜欢

热点阅读