基于PCA9422与PIC18F46K42的低功耗电源管理方案设计
2026/10/24 3:08:10
批量并发执行多个 Promise,全部成功才成功,任意一个失败立刻失败。接收一个 Promise 数组,返回一个新 Promise。
fulfilled,返回的 Promise 才成功reject,Promise.all 立刻 reject,直接拿到这个失败原因,剩下还在执行的 Promise 会继续跑,但结果会被丢弃const p1 = Promise.resolve(10); const p2 = Promise.resolve(20); Promise.all([p1,p2]).then(res=>{ console.log(res); // [10,20] }) // 有一个失败 const p3 = Promise.reject('出错'); Promise.all([p1,p3]).catch(err=>{ console.log(err); // '出错',直接进入catch })缺点:一个崩,全军覆没。如果想要失败的任务不打断整体,用
Promise.allSettled
赛跑机制:谁最先改变状态(成功 / 失败),就采用谁的结果。
const pFast = new Promise(resolve=>setTimeout(()=>resolve('快的'),100)); const pSlow = new Promise(resolve=>setTimeout(()=>resolve('慢的'),1000)); Promise.race([pFast,pSlow]).then(res=>{ console.log(res); // "快的" }) // 最先失败的例子 const pErr = new Promise((resolve,reject)=>setTimeout(()=>reject('报错'),50)); Promise.race([pErr,pSlow]).catch(err=>console.log(err)) // 报错function requestWithTimeout(reqPromise, time=3000){ const timer = new Promise((_,reject)=>{ setTimeout(()=>reject('请求超时'),time) }) return Promise.race([reqPromise,timer]) }Promise.all:全都成功才算成功,一个失败直接失败,收集全部结果Promise.race:谁先完成听谁的,不管成功失败,只拿第一名结果