前端体系|Promise专题 - 原理以及是什么
该文章介绍了编写一个手写Promise.all的原理。首先,该函数接收一个可迭代对象作为参数,并返回一个新的Promise实例。在函数内部,先将可迭代对象转化为数组,并将其中每个非Promise值转化为Promise对象。然后,判断如果转化后的数组长度为0,则直接返回一个resolved状态的Promise对象,并传递一个空数组作为值。接着,定义一个values数组和一个count变量用于记录已完成的Promise数量。接下来,通过for循环遍历每个Promise对象,使用then方法来监听其状态改变。当一个Promise对象被resolved时,将其值存入values数组中,并将count变量加1。当已完成的Promise数量等于总数时,即所有Promise对象都已resolved,返回一个resolved状态的Promise对象,并传递values数组作为值。如果其中任何一个Promise对象被rejected,直接将错误传递给最终的Promise对象。这就是手写Promise.all函数的实现原理。