Это происходит из-за того, что функция callback
не привязана к promise
, поэтому, как только promise
возвращает, все еще остается неизвестное (небольшое) количество времени до вызова функции callback
, поэтому oop удается быть быстрее.
У вас есть два простых исправления:
- Изменить поиск на работу без обратного вызова:
db.collection("influencer_chat_db").find({}).toArray(async function (err, chatResult) {
for (i = 0; i < chatResult.length; ++i) {
console.log("A");
await db.collection("chatNewmsgNotification").find({"room": chatResult[i].room}).toArray();
console.log("B")
}
});
Если по какой-то причине вам нравится функциональность
callback
, оберните ее
promise
:
db.collection("influencer_chat_db").find({}).toArray(async function (err, chatResult) {
for (i = 0; i < chatResult.length; ++i) {
console.log("A");
await new Promise((resolve, reject) => {
try {
db.collection("chatNewmsgNotification").find({"room":chatResult[i].room}).toArray(await function(err,notificationResult){
console.log("B");
resolve();
});
} catch (e) {
reject(e)
}
})
}
})