例如,在處理來自數據庫的數據並將它們寫入某個數組的複雜循環之後,我需要處理數組中的數據。會發生什麼情況是數組處理的功能在不等待挖掘循環(填充數組)的情況下被觸發。一切都必須通過setTimeout()完成; 這是正常的嗎?沒有階段性的工作。這是正常的嗎?
checkDialog: function (data, callback) {
var interlocutorsArray = JSON.parse(data);
var dialogsId = {};
mongoclient.open(function (err, cursor) {
var db = cursor.db('messages');
var dialogsDb = db.collection('dialog');
interlocutorsArray.forEach(function (item, index) {
dialogsDb.find({
owner: item.owner_user_id,
viewer: item.viewer_user_id
}, function (err, cursor) {
cursor.count(function (err, count) {
if (count === 0) {
dialogsDb.insert({
owner: item.owner_user_id,
viewer: item.viewer_user_id
}, function (err, inserting) {
dialogsId[inserting[0]._id] = {
owner: item.owner_user_id,
viewer: item.viewer_user_id
};
});
} else {
cursor.each(function (err, item) {
if (item !== null) {
dialogsId[item._id] = {
owner: item.owner,
viewer: item.viewer
};
}
});
}
});
});
});
});
setTimeout((function() {
callback(dialogsId);
}), 150);
console.log('after callback');
}
對不起,我的英語不好!
你在回調地獄那裏。 – alex
@alex太糟糕了:( 但是,我該怎麼做? – RomanGorbatko
我不明白是什麼問題?...對不起... – gillyb