我有一個ajax調用是在另一個函數內的forEach循環內。 問題是,外部函數的回調在內部循環結束之前觸發 - 所以「staticItemList」在傳遞給回調函數時沒有填充項目。 我該如何解決這個問題?我真的花了很多時間。謝謝。ajax裏面的forEach循環,內部回調火災後完成
exports.buildTheList = function (parsedList, callback) {
var staticItemList = {};
parsedList.forEach(function(parsedItem) {
db.staticList.find({"_id":parsedItem.ID}).forEach(function(err, doc) {
if (!doc){
console.log("newStaticItem not found in db");
parsedDataFetcher.fetchParsedDetails(Path, function(parsedDetails){
staticItemList["_id"] = parsedItem.ID;
staticItemList[parsedItem.ID] = {
"_id": parsedItem.ID,
"type": parsedItem.type,
}
})
}else {
console.log("newStaticItem already found in db");
}
});
});
callback(staticItemList);
}
但我不知道從「db.staticList.find({」_ id「:parsedItem.ID})返回的數組長度是多少?」 - 是不是一個問題? – Daniel
@Daniel,你只需要將該數組放入一個變量,得到它的長度,然後執行foreach就可以了。 –