当someevent
事件被触发时,我只想在继续之前等待承诺得到解决。但是slowFunctionThatReturnsPromise需要很长时间才能解决,整个过程在解决之前会关闭。因此它永远不会完成。我原本以为使用then
等待承诺得到解决,但我无法弄清楚为什么它不等待。
emitter.on('someevent', listener)
var listener = function()
{
x.slowFunctionThatReturnsPromise()
.then(function()
{
console.log('done');
})
}
答案 0 :(得分:1)
你不能在"退出" node.js描述的事件
侦听器函数只能执行同步操作。该 在调用'退出'之后,Node.js进程将立即退出。事件 侦听器导致任何其他工作仍在事件循环中排队 被遗弃例如,在以下示例中,超时 将永远不会发生:
https://nodejs.org/dist/latest-v7.x/docs/api/process.html#process_event_exit
你可以处理优雅的杀戮信号,然后在你准备好时退出这个过程。
process.on('SIGINT', () => {
x.slowFunctionThatReturnsPromise().then(function() {
process.exit(0);
})
});
答案 1 :(得分:0)
您是否在L=[121,131,141,151,161,171,181,191,242,252,262,272,282,292,363,373,383,393,484,494]
前面错过了return
?