【发布时间】:2015-11-18 04:51:15
【问题描述】:
我是node.js 的programminfg,有时异步函数变得非常脏。
我想编写异步代码,但在事件发生时检索数据我知道承诺,但这并不是我想要的,只是我要求的是这样的
asyncFunc(error,dt,ld){
//some async code such as db operations
}
然后我想以事件方式获取数据
asyncFunc.on("dt",function(dt){do something});
asyncFunc.on("error",function(err){i have an error object});
asyncFunc.on("ld",function(ls){loading});
有什么办法可以做到这一点,我知道 promises 和一些 3rd 方库反对回调地狱,但我的问题尤其是我写了如何设计我的代码?
【问题讨论】:
-
当您的异步代码解析时,您可以通过让您的异步代码检查所有 3 种情况来做到这一点。例如,让我们假设您正在执行 ajax 调用。当调用返回数据(或错误)时,您必须检查您支持的每个事件并警告您的事件调解器。如果它返回错误,则触发 'error' 事件,如果它返回数据,则触发 'dt' 事件等。就我个人而言,在厌倦了通过多个事件调用保持应用程序状态一致后,我切换到了 Promise。
-
我将如何触发一个我不确定的事件,你能不能写一个例子作为答案,然后我可以选择作为解决方案
-
下面的答案包含一个很好的内置节点调解器示例。
标签: javascript node.js design-patterns asynchronous event-driven-design