Я пытаюсь задокументировать решение распространенного вопроса об интервью и то, как решение изменилось с обновлением языка.
Например, const & let были введены в ES2015, чтобы упростить решение проблемы.
В каком году спецификации был введен 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);
}
};