有许多不同的Promise实现(Q,Bluebird等),我对在4.x中的本地Promises开始的位置感到困惑.
解决方法
how do you use Promises?
您可以使用新的构造函数Promise使用“本机”承诺. API的基础知识可以发现over on MDN,以及Promises can be found on HTML5Rocks的深入研究.
Do modules (for example the native fs module) automatically work with Promises?
他们没有,但it’s not so difficult to make a wrapper.当然,这样做对于整个Node API可能有点乏味.
OP中的一个评论提到了Bluebird的PromisifyAll,这似乎是一个将整个模块转换为使用Promises的神奇方式.漂亮!
我希望在未来版本的Node中有一些Promise-ified API,但我不确定.在这个周围可能有一个问题或讨论,也许在io.js项目上.如果我找到任何东西,我会调查和更新.
至于为什么我们有Promises和回调式API?
这可能是因为添加Promises比添加Promes更容易,而不是使得可能会破坏API更改,例如删除回调.
Or modules have to be written specifically to work with Promises?
他们是这样.
How do you know what you can use a Promise with and what you can’t?
documentation始终是API问题的最佳去处.我不知道有什么返回Promises,但我承认在我的日常使用Node API的一小部分.
There have been so many different Promise implementations (Q,Bluebird,etc) that I am confused on where to start with native Promises in Node 4.x.
您对这些不同的实现有任何具体的问题吗?我想到的是,本地承诺是非常小的.它们足够好让异步代码变得更清洁一些,但是它们没有任何变化.你提到的其他图书馆有两件事情:
>为不支持本机承诺的环境提供Polyfill
>添加不同程度的花哨功能
Node中不再需要第一个用例.所以这是一个确定你想要/需要任何这些花哨的功能的问题.
让我知道,如果这个答案是不令人满意的,我会尝试更新更多的信息!