在官方蓝鸟承诺页面中写道,如果你使用node.js,我不太可能自己写承诺。
自从我开始一个新项目以来,我发现我所有的代码库都围绕着promises。例如,我有一个返回promise的databaseConnector,一个接受promise的快速路由,使用chai-as-promise测试promises的测试,一般来说我没有编写任何接收回调的函数。
我应该编写回调模块吗?如果需要,可以将它们统一起来吗?
有什么缺点?
答案 0 :(得分:2)
我应该在ES6节点项目中使用promise吗?
是的,确切地说。 Promise是 new 标准异步接口。
在官方蓝鸟承诺页面中写道,我不太可能自己写承诺。
不完全是。它们的含义here是您几乎不需要使用new Promise
构造函数 - 它的大部分用法都是an antipattern。
您将希望在任何地方使用promise ,但您不希望从回调中明确创建它们。如果你有异步代码进行回调,promisification比{{1}}更容易使用。
自从我开始一个新项目以来,我发现我所有的代码库都围绕着承诺
你很幸运!您正在使用的所有功能已经返回并期望承诺 - 这太棒了!你可以使用它们,拥抱它们。您不必担心承诺代码中的奇怪回调模式。
我应该编写回调模块吗?如果需要,可以将它们统一起来吗?
没有。特别是如果您使用的所有API已经使用了promises。 Promise使代码更简单,更正确。 They're just great
答案 1 :(得分:1)
与回调相比,您几乎应该总是使用 promises 。它们更具可读性,解决了一些嵌套问题,并提供了一种标准化的方式来通知错误(使用reject()
)。
官方蓝鸟承诺页面的意思是
es.map()
)回调的缺点。嗯......他们曾经continuations,没有编译器设计师甚至想到直接打扰语言用户。然后node.js来了,现在每个人都写无休止的嵌套函数调用不可读(甚至不考虑调试),不提供方法用于错误处理(除了将err
作为回调的第一个参数的事实标准之外)并且不能与同步代码良好地交互。