gpt4 book ai didi

javascript - 在 node.js 中,什么时候使用事件,什么时候使用直接回调函数?

转载 作者:行者123 更新时间:2023-11-29 21:36:03 25 4
gpt4 key购买 nike

在我看来,“核心”node.js 回调语法,即

function foo(data, callback) {
callback(false, data2);
}

在语义上被事件取代,除了

  • 有了事件,你就失去了最后一点静态检查
  • 事件更灵活
  • 一旦你有超过 2 或 3 个回调函数,回调就会变得相当笨拙
  • 事件可能是非常轻微的性能开销(但在几乎所有情况下过早优化都是轻描淡写)
  • (不过话又说回来,你也必须记住这些事件......)

那么什么时候使用什么才是好的策略呢?

最佳答案

一个好的策略是使用最适合您的用例的抽象模型

我认为在这种情况下性能不是问题。

如果您向执行异步调用的客户端提供函数,将其作为单个函数公开(如您的示例)似乎是完全有效的,而且看起来非常干净。 (这似乎是大多数 node.js 数据库客户端的工作方式)。

正如您提到的,当回调超过 2-3 时,回调很快就会失控。但是将 2-3 回调函数建模为事件发射器会更好吗?也许吧,这取决于你。

IMO 2-3+ 回调肯定会使用 promises 更好地建模,因为调用结构会更扁平。

IMO 事件发射器通常用于站立时间较长的物体。存活时间“更长”的对象。您想创建一个对象并订阅一段时间内的事件,这似乎是一个与公开回调的单个异步函数完全不同的用例。

另一种选择是将您的客户端建模为流。

我认为一个好的经验法则是查看 Node 标准库(和流行的 Node 库)在何处将事件发射器应用于客户端,以及在何处为客户端提供基于回调的 API。

Node 将其 tcp 客户端/服务器建模为事件发射器

关于javascript - 在 node.js 中,什么时候使用事件,什么时候使用直接回调函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34877804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com