Promise.all 在 ES7 “任何” 中执行
Promise.all 方法是 ES6 引入的一个非常常用的用于并行处理多个异步操作的方法,在前端开发中经常会被用到。然而,在 ES7 中,Promise.all 方法被进一步优化,可以在任何可迭代对象上执行,在一定程度上扩展了它的应用范围。
在 ES6 中,Promise.all 方法接收一个由 promise 对象组成的数组作为参数,会返回一个新的 promise 对象,当数组中所有的 promise 对象都变为 fulfilled 状态后,这个新的 promise 对象才会变为 fulfilled 状态。如果数组中有一个 promise 对象变为 rejected 状态,那么这个新的 promise 对象则会立即变为 rejected 状态。
在 ES7 中,Promise.all 方法可以接收任何可迭代对象作为参数,这意味着你可以使用任何具有迭代器属性的对象作为参数,例如 NodeList、Arguments、Set 等。这样,我们就可以使用我们熟悉的 array-like 对象来代替数组。
下面是一个示例代码演示如何在 NodeList 上使用 Promise.all 方法:
----- -------- - ----------------------------------- ----- -------- - ---------------------------------- -- - ------ --- ----------------- ------- -- - -- ---- -- --- --- --- --------------------- --------------- -- - -------------------------- -- --- -- -------------- -- - ---------------------------- -- --- ---
在这个示例代码中,我们使用 document.querySelectorAll
方法选择了一组元素,然后使用 Array.from
方法将 NodeList 对象转换为数组。接着,我们使用 Array.prototype.map
方法对这个数组中的每个元素创建一个 promise 对象,并返回 promise 对象的数组。最后,我们使用 Promise.all 方法来等待所有的异步操作,并在所有异步操作都完成后进行下一步操作。
总结
Promise.all 方法是一个非常常用的用于并行处理多个异步操作的方法,在 ES7 中,它被进一步优化,可以在任何可迭代对象上执行。这个优化让我们可以更加灵活的使用 Promise.all 方法,在前端开发中减轻我们的工作负担,并提高我们的代码效率。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/648909ea48841e9894756b54