等待promise解析到emitter.on侦听器函数

时间:2017-03-11 09:45:36

标签: javascript node.js promise eventemitter

someevent事件被触发时,我只想在继续之前等待承诺得到解决。但是slowFunctionThatReturnsPromise需要很长时间才能解决,整个过程在解决之前会关闭。因此它永远不会完成。我原本以为使用then等待承诺得到解决,但我无法弄清楚为什么它不等待。

emitter.on('someevent', listener)


var listener = function()
{
    x.slowFunctionThatReturnsPromise()
        .then(function()
         {
             console.log('done');
         })
}

2 个答案:

答案 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