什么是更快的基于事件或基于延迟的处理?

时间:2013-03-09 00:33:24

标签: node.js events nested deferred promise

什么更快:

Event.once('some_event', function() { // wait until an event fired from somewhere
  defer.resolve('resolved')
})
...
// somewhere else
Event.emit('some_event')

或smth.like:

defer = doSmthDeferred(); // to get the deferred resolved/rejected from somewhere else
...
// somewhere else
doSmthDeferred = function() {
  defer
  if ...
    defer.resolve();
  else
    defer.reject();
}

I.e。:什么是更好的 - 使用嵌套的promises / deferreds进行事件处理或处理?是基于事件处理的承诺/延期吗?

1 个答案:

答案 0 :(得分:1)

这几乎是一个红鲱鱼。事件和承诺解决之间的速度差异几乎总是很小。

事件是为很多次发生的事情而设计的。例如到达网络服务器或用户点击按钮的请求。当你将它们用于异步操作时它们会变得混乱,因为它们不能正确地支持组合,即I.e。很难等到两个事件都发生了 Promise是为异步操作而设计的(比如从服务器请求Web页面)。它们只能被解决一次因此不适合类似事件。如果你有多个并行或串行的异步操作,promises可以很容易地组成它们。如果您正在寻找一个好的承诺库,我建议您查看Q