聽起來好像你想使用類似async庫來處理你的異步任務(async.series或async.parallel聽起來合適)。
這樣,您就可以對所有異步任務進行「分組」,並在所有任務完成時調用一個回調函數。從回調,你可以處理你的迴應:
app.post('/your/route', function(req, res) {
async.parallel([
// start your tasks (called 'task1', 'task2', and pass the 'async' callback
// to them; once a task is done, it needs to call the callback)
function(cb) { task1(cb); },
function(cb) { task2(cb); },
...
], function(err, results) {
if (err)
// handle error
else
res.send('tasks done'); // or whatever you want to send back
});
});
(取決於您的任務的簽名,你可以使用async.apply,而不必爲每個任務的新功能)
各地傳遞響應對象聽起來不是一個好主意,因爲 - 如果我理解正確 - 你的任務不需要自己產生響應。
情景是,我不寫內聯函數。我從另一個.js文件調用函數。那麼我需要保持傳遞響應對象嗎? – Gaurav
不,你可以只需要這些功能。但最後,你仍然需要傳遞迴調函數來告訴'async'你的函數已經完成(但是幾乎在任何異步工作流中都會出現這種情況,除非你使用類似Promise的東西)。 – robertklep