Promise.all = function (iterator) { if (!Array.isArray(iterator)) return; let count = 0; let res = []; return new Promise((resolve, reject) => { for (let item of iterator) { Promise.resolve(item) .then(data => { res[count++] = data; if (count === iterator.length) { resolve(res); } }) .catch(e => { reject(e); }); } }); }; // test const p1 = Promise.resolve(3); const p2 = 4; const p3 = new Promise(resolve => { setTimeout(resolve, 100, 'lee'); // setTimeout的第三个往后参数都是用来作为第一个参数也就是函数的参数,也就是其实是setTimeout(resolve('lee'), 100) // 详情参考:https://developer.mozilla.org/zh-CN/docs/Web/API/setTimeout }); Promise.all([p1, p2, p3]).then(data => { console.log(data); });
本文作者:前端小毛
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!