【问题标题】:Promise-based node http framework?基于 Promise 的节点 http 框架?
【发布时间】:2013-03-27 07:04:03
【问题描述】:

节点框架通常通过(err, result) 回调工作。

是否有一个基于 Promise 的 Node 的 http 框架,有一个健康的社区并且正在积极开发中(例如 express)?

【问题讨论】:

  • 我使用 Q 的 denodeify,只要我有带有 nodejs 函数的异步工作流。我也在一些外部库函数上尝试过它,它对我来说效果很好。试试Q.denodeify <express function>
  • 也许你应该澄清一下。我相信这个问题是要求一个使用 Promise 的 http 服务器的 node.js 框架,而不是一个用于发出基于 Promise 的 http 请求的库,其中一些答案似乎正在解决。

标签: node.js http promise


【解决方案1】:

你可以试试aex。

https://github.com/calidion/aex/

Aex 是基于 Promise 的,仅 async / await,不再使用 typescript 编写的回调框架。

Aex 通过简单的函数调用与 express 中间件兼容。

【讨论】:

    【解决方案2】:

    在 2016 年末仍然不完全。

    其他人跳过了 Koa.js,它确实支持基于生成器的“async/await”的 Promise。

    但我认为您的问题针对的是更深层次的集成,这可能是我所做的:一个 http 服务器,它以承诺的形式返回请求,然后可以链接在一起。

    它基于 Promise 代表可以执行的异步任务的想法,因此服务器就像我封装在一个由 Promise 引发的回调中的 Promise 流。

    它仍然具有更酷的潜力(即对于较小的专业项目),因为它的代码非常少(并且当前概念位于 0 依赖项)

    存储库中有更多详细信息:https://github.com/rsxdalv/unframed 其中包括构建过程的演练。使用可以实际运行的代码 Node.js v6.6

    【讨论】:

      【解决方案3】:

      在 HTTP 客户端,有新的fetch API https://fetch.spec.whatwg.org/

      fetch() 允许您发出类似于 XMLHttpRequest (XHR) 的网络请求,主要区别在于 [它] 使用 Promises,它可以实现更简单、更干净的 API,避免回调地狱,并且不必记住 XMLHttpRequest 的复杂 API

      (https://developers.google.com/web/updates/2015/03/introduction-to-fetch)

      一些实现:

      这里有一些示例代码:

      fetch('/some/url', {method: 'get'})
        .then(function(response) {
          // rejoice \o/
        })
        .catch(function(err) {
          // error :-(
        });
      

      【讨论】:

      • 为什么会被否决?这怎么不回答这个问题?这是一个基于 Node 和 Promise 的 HTTP 客户端,但也许我遗漏了一些东西......
      • 问题是关于服务器端的
      • 好吧,OP 的问题有点模棱两可。如果您查看我的回答,您会发现 fetch API 有服务器和浏览器实现。
      【解决方案4】:

      https://github.com/mzabriskie/axios

      用于浏览器和 node.js 的基于 Promise 的 HTTP 客户端

      示例代码:

      // Make a request for a user with a given ID
      axios.get('/user?ID=12345')
        .then(function (response) {
          console.log(response);
        })
        .catch(function (response) {
          console.log(response);
        });
      

      【讨论】:

        【解决方案5】:

        对于 HTTP 客户端,我喜欢http://www.npmjs.org/package/httpinvoke

        对于 HTTP 服务器,我喜欢 https://github.com/mjackson/mach ;太棒了!

        再说一次,我也不是 httpinvoke 的忠实粉丝,我工作,没关系。但我认为 API 比它需要的更复杂,而且我发现很难调试。我可能遗漏了什么。

        或者,我使用推荐kew(快速承诺实现)来包装回调样式方法。

        【讨论】:

          【解决方案6】:

          我今天遇到了同样的问题,我找到了q-io,也是 kriskowal 的。它使用 Q.js 来承诺包装文件系统 io 以及服务器和 http 客户端。

          我还没有尝试过,但目前它似乎没有围绕它建立一个活跃的社区。在一个充满了末日回调金字塔的世界里,看到了令人悲伤的事情。

          【讨论】:

          • 哈哈《末日回调金字塔》
          【解决方案7】:

          您可能对 Q promise 库的作者 Kris Kowal 所写的 Joey 感兴趣。社区不大,但 Kris 经常在 freenode 的 #montage irc 频道上提供帮助。

          【讨论】:

            猜你喜欢
            • 2017-05-09
            • 2016-01-31
            • 1970-01-01
            • 2012-02-19
            • 1970-01-01
            • 1970-01-01
            • 2010-09-06
            • 1970-01-01
            • 2018-01-22
            相关资源
            最近更新 更多