1.题目描述
给定一个异步函数数组 functions,返回一个新的 promise 对象 promise。数组中的每个函数都不接受参数并返回一个 promise。
promise resolve 条件:
当所有从 functions 返回的 promise 都成功解析时。promise 的解析值应该是一个按照它们在 functions 中的顺序排列的 promise 的解析值数组。
promise reject 条件:
当任何从 functions 返回的 promise 被拒绝时。promise 也会被拒绝,并返回第一个拒绝的原因。
请在不使用内置的 Promise.all 函数的情况下解决。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| var promiseAll = async function (functions) { return new Promise((resolve, reject) => { let resolveCount = 0; const promisesLength = functions.length; const values = new Array(promisesLength); for (let i = 0; i < promisesLength; i++) { functions[i]().then( (value) => { values[i] = value; resolveCount++; if (resolveCount === promisesLength) { resolve(values); } }, (reason) => { reject(reason); } ); } }); };
|