當觸發someevent
事件時,我只想在繼續之前等待承諾解決。但slowFunctionThatReturnsPromise需要很長時間才能解決,整個過程在解決之前會關閉。因此它從未完成。我本來以爲使用then
會等待承諾解決,但我不明白爲什麼它不會等待。等待承諾解析到emitter.on偵聽器函數
emitter.on('someevent', listener)
var listener = function()
{
x.slowFunctionThatReturnsPromise()
.then(function()
{
console.log('done');
})
}
*等待*和*異步*是彼此相反的東西。 *在同一個調用堆棧中繼續執行任何其他代碼之前,同步*代碼將保持進程繁忙,而*異步*代碼僅在當前正在運行的調用堆棧完成後才被調用*。 – trincot
我需要'slowFunctionThatReturnsPromise'返回的promise在退出'listener'函數之前得到解決 – jmccure
'then'回調函數是異步執行的,所以根據承諾的性質(和意圖),這些回調函數將不會在返回之前被執行承諾,但在當前代碼任務完成之後。所以:不可能。 – trincot