-
Promise.all()
Promise.alll() 具有并发执行异步任务的能力。但它的最大问题就是如果参数中的任何一个promise为reject的话,则整个Promise.all() 调用会立即终止,导致数据都无法返回。
可以用于接口返回值有依赖的情况下使用Promise.all([api.getUserInfo(), //接口api.getMemberInfo(),//接口api.getFocusedWechat(),//接口 ]).then(res =>{ if (res[0].code === 0) { console.log('success0')}if (res[1].code === 0) { console.log('success1')} }).catch((res)=> { console.log('errorAll') })
-
Promise.race()
作用跟Promise.all() 类似,不同点在于:
(1)如果最先返回的Promise请求是success状态,则不管其他请求是否成功,都能获取到返回值。例: A 最先完成 ,所以 D 行会执行(尽管第 B 行被拒绝)。
C 行待确认是否会执行const promises = [new Promise((resolve, reject) =>setTimeout(() => resolve('result'), 100)), // (A)new Promise((resolve, reject) =>setTimeout(() => reject('ERROR'), 200)), // (B)new Promise((resolve, reject) =>setTimeout(() => resolve('result'), 300)), // (C) ]; Promise.race(promises).then((result) => assert.equal( // (D)result, 'result'));
(2)如果最先返回的Promise请求是 reject 状态,则进行短路行为抛出异常;
例: B 在 A 之前报错 ,所以不继续执行。const promises = [new Promise((resolve, reject) =>setTimeout(() => resolve('result'), 200)), // (A)new Promise((resolve, reject) =>setTimeout(() => reject('ERROR'), 100)), // (B) ]; Promise.race(promises).then((result) => assert.fail(),(err) => assert.equal(// (C)err, 'ERROR'));
-
Promise.allSettled()
作用跟Promise.all() 类似,不同点在于,它不会进行短路。也就是说当Promise全部处理完成后,我们可以拿到每个Promise的状态,而不管是否处理成功。
详细解决方案
Promise.all()、Promise.allSettled()、Promise.race()三兄弟的区别
热度:84 发布时间:2023-12-04 00:17:06.0
相关解决方案
- promise api 与运用场景
- 无法实现类似节点的 async.race 功能
- Promise.all()未按预期顺序解决承诺
- fetch 函数返回 Promise
- 为什么我的 Promise 定义会被执行?
- MVC 封装JQAJAX-Promise 同步异步
- Promise 仿写-原理解析
- UVA 12034 Race
- ES6/ES2015 Promise 用法讲解
- 前端请求外域接口的时候遇到的问题Uncaught SyntaxError: Unexpected token : / Uncaught (in promise)
- vant3中vant-image使用lazy-load报错:Uncaught(in promise)TypeError Cannot read property ‘deep‘ of undefined
- 深入理解 Promise (下)
- Vue-Promise 异步操作 总结
- Uncaught (in promise) DOMException: play() failed because the user didn't interact
- promise 慕课网 学习笔记
- BZOJ2599 [IOI2011] [Race] 点分治
- 异步编程——回调函数/Promise/Async/Await
- promise(简约)
- CodeForces 592C The Big Race (高精度+数论)
- HDU 4123 Bob’s Race (树形DP+RMQ维护极值)*
- Promise.all和Promise.race
- Promise.all 循环中调用接口
- Uncaught (in promise) Error: errCode: -501005 invalid env | errMsg: Environment not found
- 写一个 符合 promise A+ 规范的 构造函数 MyPromise
- 深度解刨 ES6 promise.all 方法
- 从js 事件循环来看 setTimeout 与 promise
- Vue中报如下错误Uncaught (in promise) NavigationDuplicated解决方案
- Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location:‘xxx‘
- Promise 基本方法的简单实现
- (Promise/async): “TypeError: Cannot read property ‘length‘ of undefined“