【发布时间】:2020-12-18 21:37:09
【问题描述】:
我有同步工作逻辑,我想把它转换成异步事件驱动代码。
如何让 async foo 在事件链的末尾返回回调的承诺值( done() || fail() )?
就像让这个过于简单的例子起作用
async function foo(param){
eventEmitter.emit('first-event', param);
}
eventEmitter.on('first-event', /*Do something*/);
.
.
.
eventEmitter.on('last-event', (payload) => {
try{
/*If no error*/
eventEmitter.emit('done', payload);
}catch{
/*If error*/
eventEmitter.emit('fail', error);
}
});
function done(payload){
return ({payload:payload});
}
function fail(error){
return ({fail:error});
}
eventEmitter.on('done', payload => done(payload) );
eventEmitter.on('error', error => fail(error) );
如果有人知道它的相关信息,感谢您分享它和您的时间,如有任何错误,我们深表歉意。
【问题讨论】:
-
"我想将其转换为异步事件驱动代码。" - 为什么?您能否发布您的工作同步逻辑,并告诉我们它如何不再满足您的要求?
-
一般来说,只是use
return events.once(eventEmitter, 'done');(并使用'error',而不是'fail') -
使用构造函数
-
@Thomas 呃,不是吗?
-
@Bergi "你能发布你的工作同步逻辑,告诉我们它是如何不再满足你的要求的吗?"与需求无关,只是将其转换为发出的事件
标签: javascript node.js asynchronous events async-await