При работе над программированием nodejs я нашел простую, но интересную проблему.
Чтобы выполнить очередь асинхронных функций по очереди, я обычно использую «массив заданий» с async.series.
следующих шагов:
1. Определяет массив
2. Функции Нажмите работу в массив.
3. Используя async.series, выполните его последовательно.
, например. async.series (jobFunctionList, callback);
Закрытие JavaScript - странная справочная функция анонимной функции, нажатой в Array
Следующий примерный код упрощен.
Описанный в комментарии, он не работает так, как я ожидал.
Переменные 'key' и 'value' изменяются
, даже после того, как функция Job определена и введена в массив jobList.
Кажется, что нажатая функция постоянно ссылается на внешнюю переменную,
не значение созданного обстоятельства.
Я нашел решение проблемы, но не знаю, почему это работает.
var dataList = { key1: 'value1', key2: 'value2' };
var jobList = new Array();
for (var key in dataList)
{
var value = dataList[key];
jobList.push(
function (next)
{
console.log(key + ' : ' + value);
}
);
}
(jobList[0])();
(jobList[1])();
/* Expected Output :
key1 : value1
key2 : value2
*/
/* Real Output :
key2 : value2 <--- WHY ???
key2 : value2
*/