1
標題是很長的問題,但如果我在JavaScript中進行異步調用,但沒有回調或將其鏈接到承諾它會完成執行?即如果我有這樣的代碼:JS(node.js) - 如果我進行異步調用,但不等待它完成,它將保證完成執行?
function markAsInactive(userId) {
return retrieveUser(userId) //
.then(res => {
const mark = markAsInactive(userId) // returns a promise (say takes 2 seconds)
return Promise.resolve('blah')
})
.then(...etc)
.catch(...)
}
到markAsInactive
呼叫被激發,但線程不等待它來解決,而是將移動到立即下一個then
(我的理解)。它會保證完成執行,否則如果堆棧返回到根目錄,線程/進程是否會取消該調用?
我知道我可以使用像return Promise.all([mark, ...])
有多個承諾並行解決;這個問題更多的是爲了我的薰陶。
認爲它是這樣的:一旦請求是成功(例如發送到服務器),無論您是否等待響應都無關緊要,請求已發送並且服務器將完成必須執行的操作,並且只有在此之後它纔會嘗試響應結果。通過不「等待」它完成,你根本沒有抓住迴應。 – Cristy
例如,如果您的計算機崩潰或流星襲擊地球,它不會完成。 – 2016-07-24 13:01:33