例如,在处理数据库中的数据并将它们写入某个数组的复杂循环之后,我需要处理数组中的数据。发生的情况是数组处理的功能在没有等待挖掘周期(填充数组)的情况下被触发。一切都必须通过 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');
}
对不起,我的英语不好!