1)仅在数组内所有promise对象都resolve,才resolve,且返回Promise对象,value是所有promise对象成功的value 2)如果有一个Promise对象reject,则返回第一个reject的promise结果 3)参数的promises只要求是可迭代对象,如果传递的不是Promise对象,则直接返回原值即可。 MyPromise.all = (promises) => { // promises是数组 if...
p2]);// 所有Promise的结果都成功console.log(result1);constp3=Promise.resolve("p3: OK");constp4=Promise.reject("p4: Err");constp5=Promise.reject("p5: Err");constresult2=Promise.all([p3,p4,p5]);// 有Promise的结果失败console.log(result2);...
当 Promise 的状态为 Fulfilled 时,我们使用 setTimeout 函数将 onFulfilled 回调函数放入微任务队列中,以确保在本轮事件循环结束后执行。同样的,当 Promise 的状态为 Rejected 时,我们使用 setTimeout 函数将 onRejected 回调函数放入微任务队列中。 当Promise 的状态为 Pending 时,我们将 onFulfilled 和 onRejected 回...
js前端手撕代码系列(promise,防抖,节流,原生ajax,封装promise等),防抖与节流介绍通过防抖(debounce)和节流(throttle)的方式来减少调用频率,减少资源浪费防抖:n秒后再执行该事件,若在n秒内被重复触发,则重新计时(用搭电梯形容:电梯第一个人进来后,等待15秒
遍历传入的Promise数组,对于每个Promise对象,添加一个then()方法,将它的结果或错误原因保存到results数组中,并将其状态设置为fulfilled。 对于任意一个Promise对象的状态变为fulfilled或者rejected,返回一个新的Promise对象,并采用这个Promise对象的状态作为自己的状态,并返回它的结果或错误原因。
基于这个思路,我们可以通过以下步骤来手写实现 Promise.all() 方法: 传入一个 Promise 对象数组。 返回一个新的 Promise 对象。 创建一个空数组,用于存储每个 Promise 对象的结果。 遍历Promise 对象数组,对于每个 Promise 对象,将它的结果添加到结果数组中。