[英]Anonymous callback function in for loop in javascript
我正在嘗試在async.waterfall內部創建一個函數,該函數檢查數組中的每個id(如果在mongodb中具有此id的條目(使用Mongoose))。 如果ID已經存在,則將其從數組中刪除。 我寫了以下函數:
function(eventIds, callback) {
// check for duplicates
for (var i = 0; i < eventIds.length; i++) {
var query = Party.find({
fbEventId: eventIds[i]
});
query.exec(function(err, doc) {
if (err) return console.log(err);
if (doc) {
// remove i from array
console.log(doc);
}
});
}
callback(null, eventIds);
}
但是,這會發出警告,因為在for循環中構造了新函數。
如果我在如下所示的for循環外創建函數,則會出現錯誤:ReferenceError:未定義err。
function(eventIds, callback) {
// check for duplicates
function checkDuplicate(err, doc) {
if (err) return console.log(err);
if (doc) {
// remove i from array
console.log(doc);
}
}
for (var i = 0; i < eventIds.length; i++) {
var query = Party.find({
fbEventId: eventIds[i]
});
query.exec(checkDuplicate(err, doc));
}
callback(null, eventIds);
}
這樣做的正確方法是什么?
您正在調用該函數,而不是為其分配引用。
您的密碼
query.exec(query.exec(checkDuplicate(err, doc));
應該
query.exec(query.exec(checkDuplicate));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.