Promise.allSettled() 方法是 ES2020 新增的一个 API,用于在所有 Promise 对象都完成执行后,返回一个包含每个 Promise 对象执行结果的数组。与 Promise.all() 方法不同的是,Promise.allSettled() 方法会等待所有 Promise 对象都执行完毕,即使其中有 Promise 对象被 reject,也不会中断执行。
使用示例
-- -------------------- ---- ------- ----- -------- - - ---------------------------- ------------------ ------------------- ------------------------- ------- -- ---------------------------- ------------- -- - --------------------- -- ------------ -- - --------------------- ---
运行上述代码,控制台会输出如下结果:
[ {status: "fulfilled", value: "resolved"}, {status: "rejected", reason: Error: rejected at <anonymous>:3:17}, {status: "fulfilled", value: "resolved again"} ]
从结果可以看出,Promise.allSettled() 方法返回的结果中包含了每个 Promise 对象的执行结果,包括执行状态和返回值或错误信息。
深入理解
Promise.allSettled() 方法返回的结果是一个 Promise 对象,可以通过 then() 方法获取执行结果。then() 方法的参数是一个回调函数,该函数接收一个数组作为参数,数组中包含每个 Promise 对象的执行结果。
每个 Promise 对象的执行结果都是一个对象,该对象包含两个属性:status 和 value 或 reason。status 属性表示 Promise 对象的执行状态,可能的值为 fulfilled 和 rejected。value 或 reason 属性分别表示 Promise 对象的返回值或错误信息。如果 Promise 对象没有返回值,value 属性的值为 undefined。
在实际开发中,我们可以使用 Promise.allSettled() 方法来处理多个 Promise 对象的执行结果,无论是否发生错误,都能够获取到每个 Promise 对象的执行状态和返回值或错误信息,从而更加准确地处理业务逻辑。
使用指导
在使用 Promise.allSettled() 方法时,需要注意以下几点:
- Promise.allSettled() 方法返回的结果是一个 Promise 对象,需要通过 then() 方法获取执行结果。
- 每个 Promise 对象的执行结果都是一个对象,该对象包含两个属性:status 和 value 或 reason。
- Promise.allSettled() 方法会等待所有 Promise 对象都执行完毕,即使其中有 Promise 对象被 reject,也不会中断执行。
- Promise.allSettled() 方法接收一个 Promise 对象数组作为参数,该数组中的 Promise 对象可以是已经执行完毕的 Promise 对象,也可以是正在执行的 Promise 对象。
在实际开发中,我们可以使用 Promise.allSettled() 方法来处理多个异步操作的执行结果,无论是否发生错误,都能够获取到每个异步操作的执行状态和返回值或错误信息,从而更加准确地处理业务逻辑。
总结
Promise.allSettled() 方法是一个非常实用的 API,可以用于处理多个异步操作的执行结果。在使用该方法时,需要注意返回结果的格式和执行顺序,以便更好地处理业务逻辑。同时,我们也需要注意 Promise 对象的执行状态和返回值或错误信息,以便更好地处理异步操作的结果。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/650c103895b1f8cacd62657d