Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于事件到达恢复执行的节点JS_Javascript_Node.js - Fatal编程技术网

Javascript 基于事件到达恢复执行的节点JS

Javascript 基于事件到达恢复执行的节点JS,javascript,node.js,Javascript,Node.js,我有一个NodeJS应用程序,它侦听从实体a的套接字接收的事件,并根据这些事件执行操作。此操作包括基于承诺链对不同实体(包括)的调用 我实际需要实现的是一种机制,调用实体a中的操作,并基于新事件而不是响应执行回调。因此,流程将是: return new RSVP.Promise(function (resolve, reject) { run action1(); .then(function (response) { return action2();

我有一个NodeJS应用程序,它侦听从实体a的套接字接收的事件,并根据这些事件执行操作。此操作包括基于承诺链对不同实体(包括)的调用

我实际需要实现的是一种机制,调用实体a中的操作,并基于新事件而不是响应执行回调。因此,流程将是:

return new RSVP.Promise(function (resolve, reject) {
    run action1();
    .then(function (response) {
        return action2();
    })
    .then(function (response) {
        return action3();
    })
    .then(function (response) {
        // code to wait for an event to arrive and resume this
    })
}

这能实现吗

你似乎不需要周围的
新承诺,似乎是这样。假设
run\u action
返回承诺,则只需:

return run_action1()
    .then(function (response) {
        return action2();
    })
    .then(function (response) {
        return action3();
    })
    .then(function (response) {
        return new Promise(function(resolve, reject) {
            listen(resolve);
        });
    })
   .then(somethingElse);

实际上我不知道如何实现。什么是
运行操作
?它是否回报了承诺?你为什么在它后面写了一个分号?谢谢你的回复。我想知道的是listen函数将如何实现,假设listen将等待事件到达。当事件到达时,为了恢复执行,我应该调用什么。您可以编写listen函数来执行从正在使用的事件发射器侦听事件所需的任何操作,通常类似于
thing.on(“事件”,resolve)
。当事件到达时,您不需要调用任何东西来恢复执行。这就是承诺对你的作用。解决承诺后,将执行
然后
方法中指定的函数。