我定義了可以在終端運行的簡單吞吐任務,其中gulp load
。目的是獲取沒有location
屬性集的用戶數量。 但是,數字成功返回後,該進程掛起終端,我需要ctrl-c
停止它。請注意,這不是異步調用,並使用mongoose
插件來訪問數據庫。吞吐任務在Nodejs完成任務後掛起
gulp.task('load', function() {
dbCall.getUserNumberWithoutLocation();
});
var getUserNumberWithoutLocation = function() {
var query = User.find({ 'location': null });
query.exec(function(err, users) {
for (var i = 0; i < users.length; i++) {
console.log(users[i].location);
}
console.log(users.length);
})
};
「這不是一個異步調用」 - 如果你在談論User.find(),當然是一個異步調用。 – Tomalak
@Tomalak啊,你是對的,我的骨頭!儘管如此,吞吐並沒有正確終止異步調用?這是設計嗎? –
當然它確實如果你告訴它通話已完成。 (畢竟,吞嚥本身是非常異步的)。查看'gulp.task'的回調語義。 https://github.com/gulpjs/gulp/blob/master/docs/API.md#async-task-support(提示 - 你可以在這裏寫一個答案你自己的問題,這是一個很好的機會。 ) – Tomalak