У меня проблема с циклом for в node.js. Я перечисляю все события в календаре Google и проверяю, были ли они добавлены в мою базу данных монго. Для контура проходит через каждое событие (здесь я еще не вставив его в БД, только тестирование):Неверный порядок для цикла в node.js (google calendar api, mongojs)
for (var i = 0; i < events.length; i++) {
var event = events[i];
console.log("first");
console.log(event);
db.events.find({googId = event.id}, function(err, doc) {
if (doc.length == 0) {
console.log("second");
console.log(event);
}
}
Так что, когда я проверяю консоль, это первый имеет все " firsts "напечатаны в порядке, после чего у него есть" второе "и только последнее событие в списке на каждой итерации. Я немного смущен, поскольку я ожидал, что это покажет, например. (Предполагающие event1 и event2 еще не были добавлены в базу данных Монго):
first
event1
second
event1
first
event2
second
event2
вместо:
first
event1
first
event2
second
event2
second
event2
Что я здесь делаю неправильно?
Это не просто случай завершения цикла перед выполнением обратных вызовов? – mathematician1975
Спасибо! Я все еще довольно новичок в JS, поэтому я не знал об этом. –
Да, асинхронная природа немного начинает привыкать к началу. – mathematician1975