首页 > 解决方案 > Promise.all 是在什么规范中引入的?

问题描述

我正在尝试记录一个常见面试问题的解决方案,以及解决方案如何随着语言更新而改变。

例如,在 ES2015 中引入了 const & let,使问题更容易解决。

Promise.all 是在哪一年引入的?

相关代码

// solution using promises
//
function asyncMap(tasks, callback){
  tasks = tasks.map(task => new Promise(task))
  return Promise.all(tasks)
    .then(callback);
}


// solution using let and const introduced in ES2015
// released in 2015 and sometimes referred to as ES6
function asyncMap1(tasks, callback) {
  const results = [];
  let count = 0;
  for (let i = 0; i < tasks.length; i++) {
    tasks[i](function (val) {
      results[i] = val;
      count++;
      if (count === tasks.length) {
        callback(results);
      }
    });
  }
};


// before let was available an IIFE would be needed
//
function asyncMap2(tasks, callback) {
  var results = [];
  var count = 0;
  for (var i = 0; i < tasks.length; i++) {
    (function (i) {
      tasks[i](function (val) {
        results[i] = val;
        count++;
        if (count === tasks.length) {
          callback(results);
        }
      });
    })(i);
  }
};

标签: javascriptasynchronouspromise

解决方案


通过查看ES2015的规范文档。2015 年 6 月更具体。

ECMAScript® 2015 语言规范

25.4.4.1 Promise.all(可迭代)

如果您还想知道是否可以使用它,只需在Can I Use或点击此链接询问。


推荐阅读