Для того, чтобы убедиться, что «222» регистрируется после того, как «111», вы должны были бы сделать это:
jsonArray.forEach(function (that) {
db.each(sql, function (err, row) {
}, function (err, rows) {
console.log("111");
console.log("222");
});
});
Это потому, что вторая функция передается db.each()
гарантированно будет называться после запрос БД завершен. Поскольку запрос БД выполняется асинхронно, вы не можете зарегистрировать «222» сразу после запуска запроса и ожидать его надежного отображения после «111».
Теперь, если вы на самом деле хотел «111», чтобы распечатать с каждым результатом строки, вы хотите что-то вроде этого:
jsonArray.forEach(function (that) {
db.each(sql, function (err, row) {
console.log("111");
}, function (err, rows) {
console.log("222");
});
});
взглянуть на async.js и его eachSeries функционировать – Molda
, почему вы не можете разместить эту строку внутри самого обратного вызова? я имею в виду после console.log («111»); ? – Robin
Привет @Robin, 'console.log (" 222 ");' is after loop. – hahamed