我应该在ES6节点项目中使用多less承诺?

在官方的蓝鸟承诺页面中写道,如果你使用的是node.js,那么我不太可能自己写承诺。

自从我开始一个新项目以来,我发现我所有的代码都围绕着诺言。 例如,我有一个数据库连接器,它返回一个承诺,一个承诺承诺的快速路由,testing承诺,承诺testing承诺,一般我没有写任何接收callback的函数。

我应该写callback模块,如果需要promisify他们?

有什么缺点?

我应该在ES6节点项目中使用promise吗?

是的,明确的。 承诺是新的标准asynchronous接口。

在官方的蓝鸟承诺页面中写道,我不太可能自己写诺言。

不完全是。 这里的意思是,你几乎不需要使用new Promise构造函数 – 它的大部分用法都是反模式 。
你会希望在任何地方使用promise ,但是你不想从callback中明确地创build它们。 如果你有asynchronous代码需要callback, promisification比new Promise更容易使用。

自从我开始一个新项目以来,我发现我所有的代码都围绕着诺言

你很幸运! 所有你正在使用的function已经返回并期待承诺 – 这太棒了! 你可以使用它们,拥抱它们。 您不必担心承诺代码中的奇怪callback模式。

我应该写callback模块,如果需要promisify他们?

不是,如果你所使用的所有API已经使用promise。 承诺做出更简单,更正确的代码。 他们很棒 。

callback相比,你几乎总是使用承诺 。 它们更可读,解决一些嵌套问题,并提供一个标准化的方式来通知错误(使用reject() )。

官方的蓝鸟承诺网页可能意味着什么

  • 在节点上,你可以经常使用stream来解决更多的性能问题(比如gulp),在那里你经常有callback而不是promise(想想es.map()
  • 正如你提到的es6 ,你可以使用生成器而不是callback/承诺。 他们在一起工作不好,所以坚持一个或另一个,但在某些情况下,他们很方便。
  • 你甚至可以使用es7functionasynchronous/等待 ,这将有望使未来的一切过时。

缺点callback。 那么……他们曾经是延续 ,没有编译器devise师甚至想到直接打扰语言用户。 然后node.js来了,现在每个人都编写不可读的 嵌套函数调用(甚至没有想到debugging),不提供error handling的方式 (除了err作为第一个参数的事实标准callback),并且不能和同调代码交互。