已經有超過幾篇文章,但我仍然無法讓我的頭纏繞這個特定的問題。異步和並行處理
如果我必須打電話給三個外部站點,Facebook,Twitter和Instagram,我會用異步並行方式啓動所有三個站點,並等待Facebook響應20秒鐘,我不確定發生了什麼。這個電話是Twitter的開始,還是Instagram,它們都運行並且可能在Facebook的調用之前完成,或者整個用戶線程是否暫停,直到下一輪的事件循環,以及另一個用戶呼叫通過?它對我們來說看起來像後者。或者整個線程停下來等待?
根據請求,這裏是代碼的減少版本。 Service_requests是一組調用Facebook,Instagram和Twitter的函數。還有一些其他的東西也在這裏發生,但它的肉很簡單。
Async.parallel(service_requests, function (err, results)
{
if (err) { next(err); return; }
var articles = [];
for (var i = 0; i < results.length; i++)
{
articles = articles.concat(results[i]);
}
next(null, articles);
});
謝謝。有時很難說出發生了什麼,因爲有很多因素。將消息打印到控制檯是有幫助的,但由於難以複製所有因素,因此不太確定我們所看到的內容。 – CargoMeister