实现Promise.all功能

103 阅读1分钟
function getLongestSubStr(s){
 function promiseAll(promises) {
  return new Promise((resolve, reject) => {
    if (!Array.isArray(promises)) {
      throw new Error('arguments must be an array!');
    }
    let resolvedCounter = 0;
    const result = [];

    promises.map(promise => {
      Promise.resolve(promise).then(
        res => {
          resolvedCounter += 1;
          result.push(res);

          if (resolvedCounter === promises.length) {
            return resolve(result);
          }
        },
        err => {
          return reject(err);
        }
      );
    });
  });
}