ES10 中 Promise.allSettled() 方法的使用与注意事项
Promise.allSettled() 是 ES10 新增的 Promise 方法,其作用是接收一个 Promise 数组并返回一个新的 Promise,该新 Promise 的状态会在所有传入的 Promise 都执行完成之后确定。与 Promise.all() 不同的是,Promise.allSettled() 将会等待所有的 Promise 执行完成,而不管其是否成功或失败,之后返回一个包含所有完成状态的 Promise 结果对象数组。这使得我们可以避免使用 try...catch 捕获每个可能出现错误的 Promise 的异常,并可以轻松获取每个 Promise 完成情况的详细信息。
使用示例:
-- -------------------- ---- ------- ----- -------- - - --------------------------- ------------------ ---------------- ------------------------ --------- -- ------------------------------------------- -- - ------------------------ -- - --------------------------- -------------------------- --------------------------- --- ---
结果:
fulfilled, success, undefined rejected, undefined, Error: error fulfilled, another success, undefined
注意事项:
Promise.allSettled() 返回的是一个 Promise,因此需要使用 then() 或 async/await 来获取结果。
确保所有传入的 Promise 都执行完成后再使用 Promise.allSettled(),否则将只返回执行完成的 Promise 数组结果。
结果对象数组中的每个元素都包含以下三个属性:
status:表示 Promise 的状态,可能值为 fulfilled 或 rejected。
value:表示 Promise 成功时的结果,如果 Promise 失败则该属性值为 undefined。
reason:表示 Promise 失败时的原因,如果 Promise 成功则该属性值为 undefined。
总结:
使用 Promise.allSettled() 方法可以轻松获取多个 Promise 的执行状态和结果,无需为每个 Promise 单独添加 try...catch 块以捕获异常。同时,由于同时等待多个 Promise,因此可以提高代码的执行效率,对于需要并发执行多个操作的情况非常有用。在使用时,需要注意传入的 Promise 数组是否执行完成,以及返回结果数组中每个元素的状态、值和原因。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c57001d20074f47a46a5ee