【问题标题】:NodeJS best practices with Promises使用 Promises 的 NodeJS 最佳实践
【发布时间】:2015-08-04 19:58:47
【问题描述】:

我正在 amqp.node (amqplib) 之上开发一个新库,基本上我们不需要所有的 RabbitMQ 功能。因此,我正在创建一个简单的库,以方便我们项目的使用。

这个新库将返回 Promises。因此,例如,订阅队列将返回一个关于 Ok 和 Error 的 Promise。但是,我应该如何处理以后的问题?断开连接、重新连接、删除队列等?这将在 promise 解决后发生。我的新班级应该发出他自己的错误吗?这是处理 Promise 的好方法吗?

【问题讨论】:

    标签: javascript node.js amqp


    【解决方案1】:

    Promise 是一次性的设备。因此,它们只是一次性状态转换的正确设计工具。一旦它们被解决或拒绝,它们就会被锁定在该状态。在那之后,你要么必须为新操作提供新的承诺,要么承诺不是真正正确的方案,你宁愿拥有类似事件通知的东西。

    因此,如果您可以断开连接,然后重新连接,然后断开连接,等等......您要么必须为每个状态转换创建一个新的承诺,要么承诺并不是最简单的实现,你真正想要的只是一种为侦听器订阅各种事件的能力(从 eventEmitter 派生并发出其他人可以收听的有趣事件)。

    我并没有声称完全了解您要构建的内容,但您的描述中的几个部分听起来可能您希望为您的大部分项目提供更多的事件通知方案而不是承诺。

    仅供参考,这里有一些关于不同通知方案的有趣文章:

    Callbacks, Promises, Signals and Events

    JavaScript Asynchronous Architectures: Events vs. Promises

    Event Emitter, Pub Sub or Deferred Promises … which should you choose?

    【讨论】:

      【解决方案2】:

      以下是实现承诺时可以遵循的指南:

      Promise Guidelines

      您也可以参考或使用这些 -> q promise library 是根据上述指南创建的。

      【讨论】:

        猜你喜欢
        • 2014-08-28
        • 2018-12-10
        • 2022-01-16
        • 2017-04-07
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        • 2015-07-24
        相关资源
        最近更新 更多