Я пытаюсь выполнить цикл, в то время как подсчет некоторого массива меньше 50, или если цикл прошел более 14 итераций. Это похоже на идеальное использование для async.whilst.async.whilst с внутренним обратным вызовом
Однако мое усложнение заключается в том, что моя работа имеет асинхронный запрос внутри него (запрос базы данных).
Вот простой вариант моего кода:
var items = [];
var key = 20150713;
var iterations = 0;
async.whilst(
function(){
return items.length < 50 || iterations < 14;
},
function(callback){
iterations+=1;
dbQuery("my query", function(err, res){
key -=1;
//add res to items.
callback();
});
},
function(err){
});
Конечно, этот код не работает, потому что dbQuery() возвращает немедленно, так async.whilst просто дует через 14 итераций и возвращает пустой массив, прежде чем первый dbQuery даже возвращается.
Как справиться с этим, чтобы async.whilst ожидал возврата внутренней функции перед запуском снова?
Или isync.whilst не подходит для моей задачи?
Спасибо. Думал, что последняя функция была только для ошибок. –