在前端开发中,处理异步请求是非常常见的操作。我们经常需要在多个异步请求都返回结果之后才能进行下一步操作。Promise.all() 可以实现这一功能,但是如果有其中一个请求失败了,那么整个 Promise 都会失败。而 Promise.allSettled() 则会等所有请求都有了结果之后返回一个包含每个 Promise 详细状态的数组,不管其中是否有 Promise 失败。
Promise.allSettled()
Promise.allSettled() 接收一个 Promise 数组,返回一个 Promise 对象。当传入的所有 Promise 都已经 fulfilled 或 rejected 时,返回结果集包含每个 Promise 的结果状态(fulfilled 或 rejected),并且结果集中包含每个 Promise 的返回结果或错误原因。
语法:
Promise.allSettled(iterable)
参数:
- iterable:一个可以迭代的能产生 Promise 实例的数组。
返回值:
- 一个 Promise,其 resolve 值是一个数组,包含一个各状态的对象。
示例代码
-- -------------------- ---- ------- ----- -------- - - ------------------------------------------------------------------- -- ----------------- ------------------------------------------------------------------- -- ----------------- ------------------------------------------------------------------- -- ---------------- -- ---------------------------- ------------- -- - ---------------------- -- - -- -------------- --- ------------ - -------------------------- - ---- - ----------------------------------- - --- -- ------------ -- - ------------------- ---展开代码
在上面的代码中,我们创建了一个包含三个异步请求的 Promise 数组。通过 Promise.allSettled(),我们可以以数组的形式获取每个 Promise 对象的状态和返回值或错误原因。在 then() 方法中,我们检查每个 Promise 的状态并输出结果或错误信息。
指导意义
使用 Promise.allSettled() 而不是 Promise.all() 的好处是,即使其中一个 Promise 失败或被拒绝,代码仍然可以继续运行。在实际开发中,如果我们需要执行多个异步请求并获取它们的结果,并且不想因为某一个请求失败而影响其他操作,这将非常有用。
此外,Promise.allSettled() 还为我们提供了更好的错误处理机制。我们可以检查每个 Promise 的结果状态,以及在出现错误时查看错误原因。
综上所述,Promise.allSettled() 是一种非常有用的方法,可以使我们更有效地处理多个异步请求,并提供更好的错误处理机制。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67b69e3f306f20b3a62b24af