ES11 中的 Promise.allSettled:更好的错误匹配
Promise.allSettled() 是 ES11 新增的 Promise API,它是用来处理多个 Promise 实例的方法,与 Promise.all() 和 Promise.race() 类似,但是与它们不同的是,Promise.allSettled() 不会在任意一个 Promise 实例 reject 时中断,而是会等到所有 Promise 都 settle 后再返回结果。
在实际应用中,当我们需要批量发起请求或执行一组异步操作时,使用 Promise.allSettled() 可以更好地处理错误匹配,而非像 Promise.all() 一样一旦有一项操作失败就抛出错误。
示例代码:
-- -------------------- ---- ------- ----- -------- - - ----------------------- ----------------------- -------------------- ---------------------------- -- ---------------------------- ------------- -- - ---------------------- -- - -- -------------- --- ------------ - -------------------------- - ---- - --------------------------- - --- ---
在上述例子中,我们发起了四个异步请求,使用 Promise.allSettled() 处理了这四个请求的返回值,其中 result.status 可以为 'fulfilled' 或 'rejected',根据 status 判断操作是否成功,从而进行相应的处理。
另外,需要注意的是,Promise.allSettled() 返回的是一个 Promise 对象,因此需要使用 .then() 或 async/await 来获取其返回值。
总结
Promise.allSettled() 是一种更好的处理多个 Promise 实例的方式,它可以更好地处理错误匹配问题,避免了 Promise.all() 的错误中断机制,使得代码更加健壮和可靠。但是,需要注意在实际使用中需要根据实际情况判断 error 的类型和处理方式,避免出现潜在的问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646c2783968c7c53b0b32615