解释:上述构造方法中的两个参数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())
网友评论