Выполнение массива запросов перед обратным вызовом
То, что я хочу сделать, это перебрать объект sql запросов, выполнить их один за другим при получении результатов, а затем вызвать обратный вызов после того, как все будет завершено. Вот код:
_.each (fieldValSQL, function (sql, fieldKey) { conn.query (sql, function (err, result) { fields [fieldkey] = результат; }); }); // это должно выполняться последним CB ();
1 ответ
Решение
Попробуй это. После завершения каждого запроса запускается функция, которая проверяет, все ли запросы успешно выполнены, и если да, то выполняет обратный вызов.
var totalQueries = fieldValSQL.length;
var doneQueries = 0;
var doneChecker = function() {
if (totalQueries == doneQueries) {
//this should execute last
cb();
}
}
_.each(fieldValSQL, function(sql, fieldKey) {
conn.query(sql, function(err, result) {
fields[fieldkey] = result;
doneQueries++;
doneChecker();
});
});