当触发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