基于Promise的节点的http框架?
节点框架通常通过(err, result)
callback来工作。
Node是否有一个基于承诺的http框架,并且有一个健康的社区和积极的开发(例如express)?
在HTTP客户端,有新的fetch API
https://fetch.spec.whatwg.org/
fetch()
允许你创build类似于XMLHttpRequest(XHR)的networking请求,主要区别是它使用了Promises,它使得一个更简单和更清洁的API,避免了callback地狱,并且必须记住XMLHttpRequest的复杂API
( https://developers.google.com/web/updates/2015/03/introduction-to-fetch )
一些实现:
- 浏览器“poly-fill”(旧浏览器) https://github.com/github/fetch
- 节点版本https://www.npmjs.com/package/node-fetch
- 跨平台版本https://github.com/matthew-andrews/isomorphic-fetch (我不喜欢在这种情况下使用的“isomorphic”这个词…无论如何)
这里有一些示例代码:
fetch('/some/url', {method: 'get'}) .then(function(response) { // rejoice \o/ }) .catch(function(err) { // error :-( });
有https://github.com/mzabriskie/axios
基于Promise的浏览器和node.js的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); });
我今天也有同样的问题,而且我也是通过kriskowalfind了q-io 。 它使用Q.js来承诺包装文件系统io以及服务器和http客户端。
我还没有尝试过,但在这一点上它似乎并没有build立一个活跃的社区。 可悲的是,在这个充满回望金字塔末日的世界里,
你可能会对Q promise库的作者Kris Kowal写的Joey感兴趣。 没有一个大的社区,但是Kris经常在freenode的#montage irc频道上提供帮助。
2016年末还不甚平。
其他人已经跳过了Koa.js,它支持基于“asynchronous/等待”的生成器的承诺。
然而,我认为你的问题的目标是一个更深层次的整合,这可能是我所做的:一个HTTP服务器返回请求作为承诺,然后可以链接在一起。
它的基础是承诺代表了可以一次完成的asynchronous任务,因此服务器就像一个承诺stream,我封装在一个承诺唤起的callback。
它还是一个很酷的潜力(即对于较小的专业项目),因为它只有很less的代码(当前概念位于0依赖)
有关这个更详细的信息库: https : //github.com/rsxdalv/unframed其中包括build设过程的步行。 用代码实际上可以运行Node.js v6.6
对于HTTP客户端,我喜欢http://www.npmjs.org/package/httpinvoke 。
对于HTTP服务器,我喜欢https://github.com/mjackson/mach ; 这很棒!
然后再次,我也不是一个如此巨大的粉丝httpinvoke,我的工作,没关系。 但是我认为这个API比我们需要的更加复杂,我觉得很难debugging。 我可能会错过一些东西。
或者,我使用推荐kew (快速承诺实现)来包装callback样式方法。