ECMAScript 2020 新增了一个 Promise 方法:Promise.allSettled。该方法可以接收一个 Promise 数组作为参数,返回一个新的 Promise,该 Promise 在所有传入的 Promise 都已经 resolve 或 reject 后才会 resolve,返回一个包含所有 Promise 状态的数组,状态包括 fulfilled 和 rejected。
语法
Promise.allSettled(iterable)
参数:
- iterable:一个可迭代对象,通常是一个 Promise 数组。
返回值:
- 返回一个新的 Promise 对象。
示例
----- -------- - ------------------- ----- -------- - ------------------------ ----- -------- - --------------------------- ----------------------------- --------- ---------- --------------- -- - --------------------- ---
输出结果:
- - ------- ------------ ------ - -- - ------- ----------- ------- ------- -- - ------- ------------ ------ --------- - -
使用场景
并行请求数据
在前端开发中,我们经常需要同时请求多个接口数据,然后根据响应结果做出相应的处理。使用 Promise.allSettled 方法可以方便地实现这个功能。
----- -------- - -------------------- ----- -------- - -------------------- ----- -------- - -------------------- ----------------------------- --------- ---------- --------------- -- - ------------------------ -- - -- -------------- --- ------------ - -------------------------- - ---- - ----------------------------- - --- ---
批量上传文件
在上传多个文件时,需要等待所有文件上传完成后再执行下一步操作。使用 Promise.allSettled 方法可以轻松实现这个功能。
----- ----- - ------- ------ ------- ----- -------------- - ---------------- -- - ------ ----------------- --- ---------------------------------- --------------- -- - ------------------------ -- - -- -------------- --- ------------ - -------------------------- - ---- - ----------------------------- - --- ---
总结
Promise.allSettled 方法可以方便地处理多个 Promise 的状态,适用于并行请求数据和批量上传文件等场景。在使用时需要注意,该方法返回的 Promise 一定会 resolve,不会 reject。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65c8afa8add4f0e0ff275629