0
我有一個Node.js/Express應用程序,有時候我需要執行一個不需要等待結果的非關鍵異步任務(例如,一個調用來保存一些在分析平臺的數據):不等待結果的異步任務
router.post("/", function (req, res, next) {
criticalTask()
.then(result => {
res.json({success: true});
nonCriticalTask();
})
.catch(next)
}
在那個時候,nonCriticalTask()
地沒有在中間終止它完全執行的保證嗎?這有什麼限制嗎?
如果'nonCriticalTask()'中有任何異常/錯誤發生,是的,它會在中間終止。你必須處理它。但是你問的是持有。您不等待結果執行任何其他任務。如果'nonCriticalTask'內的任何內容都是異步的,你就會有優勢。 – RaR
我不確定你認爲會終止它,你能詳細說明爲什麼你認爲它可能不會被調用,或者爲什麼它可能不會完成。 – nycynik
具體來說,在我們的例子中,'nonCriticalTask'涉及到向外部服務發出HTTP POST請求,有時TCP會話在調用過程中被終止,而不發送完整的POST數據(根據這個外部服務提供者的日誌如果這很重要,那就是Zapier)。我們的服務器日誌中沒有任何跡象表明存在任何錯誤。一旦我們轉向等待'nonCriticalTask'的結果,問題就沒有了。所以我試圖找到一些關於預期行爲的文檔。 – Anton