18

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

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

4

7 回答 7

12

在 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 :-(
  });
于 2016-02-05T20:18:38.870 回答
7

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);
  });
于 2016-02-05T19:47:03.780 回答
4

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

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

于 2013-05-26T18:39:58.810 回答
3

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

于 2013-04-10T00:21:55.890 回答
2

即使在 2016 年末,仍然不完全。

其他人跳过了 Koa.js,它确实支持基于生成器的“异步/等待”的承诺。

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

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

它仍然是一个很酷的潜力(即对于较小的专业项目),因为它的代码很少(并且当前的概念位于 0 依赖项)

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

于 2016-10-11T20:28:50.817 回答
1

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

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

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

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

于 2014-10-02T08:50:44.793 回答
0

你可以试试aex。

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

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

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

于 2020-01-06T08:27:56.190 回答