В примере:Почему async node.js ведет себя странно?
async.eachLimit([1,2,3,4,5,6,7,8,9,10], 6, function(a, b) {
console.log("current: " + a);
b("done");
},
function(err) {
if (err) {
console.log("error");
} else {
console.log("completely done");
}
}
);
Выход:
current: 1
error
current: 2
current: 3
current: 4
current: 5
current: 6
undefined
Почему такое странное поведение? Где происходит ошибка и неопределенность? И где обрабатываются остальные 4 элемента? Когда вызывается обратный вызов async? Как и следовало ожидать от меня:
current: 1
done
current: 2
done
current: 3
done
current: 4
done
current: 5
done
current: 6
done
current: 7
done
current: 8
done
current: 9
done
current: 10
done
compeletely done
Так что только 6 элементов активны одновременно.
Что я должен изменить, чтобы получить поведение async, как я ожидал?
Update:
и если я использую
async.**eachSeries**([1,2,3,4,5,6,7,8,9,10], function(a, b) {
console.log("current: " + a);
b("done");
},
function(err) {
if (err) {
console.log("error");
} else {
console.log("completely done");
}
}
);
, то выход странно тоже:
current: 1
error
undefined
Вы не печатаете 'done' только' compeletely done' в конце. См. Ответ Джонатана о том, почему он терпит неудачу. – user568109