js promise.all原理
resolved是什么状态    Promise.all是一个非常有用的Promise方法,当需要同时发起多个异步请求或执行多个异步函数时,Promise.all能够同时处理多个Promise对象,等待所有Promise对象都resolved,才会响应结果。
    Promise.all接收一个Promise对象的数组作为参数,返回一个新的Promise对象。该Promise对象在所有Promise对象都resolved后,将以一个数组形式返回所有结果值,如果其中任意一个Promise对象rejected,则立即返回rejected状态的Promise对象,且没有自己的结果。
    Promise.all方法的本质是在对多个promise的结果进行集合,等到所有promise都完成,再将结果返回一个Promise。
    首先,需要明确Promise.all方法是并行执行所以的promise对象,而且它们的状态不同,Promise.all方法还要参考所有promise对象的状态,最后才能把这些promise对象的结果集合起来返回给调用者。
    实现流程:
    1. 判断传入的数组是否是数组类型,如果不是则抛出异常。
    2. 判断数组中每个元素是不是Promise对象,如果不是,则调用solve()方法将其转换成promise对象。
    3. 如果传入的数组为空,则Promise.all方法立即返回一个resolved状态的空数组Promise对象。
    4. 遍历数组中的每一个promise对象,将它们的状态变化保存在一个新的数组里。
    6. 除此之外,如果数组中有一个promise对象是永久pending状态,Promise.all()方法将不会结束,所以我们需要设置一个计时器或使用Generator函数,以避免程序一直等待。
    Promise.all方法的实现原理主要涉及Promise对象的状态变更、solve()方法、ject()方法、Promise.then()、Promise.catch()等Promise方法。掌握了这些知识点,我们就可以更深刻地理解Promise.all的实现原理了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。