Promise中race和all区别

race和all 都是将多个Promise 封装成一个新的Promise。

race的方法执行结果取决于第一个Promise的返回结果,reject则执行catch,resolve则执行then,不会等待定时器的执行,会将定时器时间执行时间短的结果返回

const p1 = new Promise(function (resolve, reject) {reject("fail");})

const p2 = new Promise(function (resolve, reject) {setTimeout(function () {resolve("success2");},3000)}

Promise.race([p1,p2]).then(resposes=> {

console.log(resposes);

}).catch(error=>{

console.log(error);

})

执行结果为 fail,走的catch

all  所有Promise的结果都返回resolve才会执行then,返回结果为一个存放所有结果的数组里,如果有任何一个返回reject,则执行catch,如果第一个Promise是有延迟执行的 则会等待执行完才继续

const p1 = new Promise(function (resolve, reject) {setTimeout(function () {resolve("success1");},3000)})

const p2 = new Promise(function (resolve, reject) {resolve("success2");})

Promise.all([p1,p2]).then(resposes=> {

console.log("all"+resposes);

}).catch(error=>{

console.log("allerror"+error);

})

执行的结果 success2 ,success1,

allSettled 只有等到所有这些参数实例都返回结果,不管是fulfilled还是rejected,包装实例才会结束。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容