蓝鸟承诺:错误不是一个功能

时间:2015-09-21 08:09:43

标签: javascript bluebird

由于某些我无法找到的原因,这段简单的代码无法正常工作。

new Promise(function (resolve, reject) {
  resolve();
}).then(function() {
  console.log("then: ")
}).error(function(err) {
  console.log("err: ", err)
})

它给了我

Uncaught TypeError: (intermediate value).then(...).error is not a function

如果我将error替换为catch,则运行正常。我宁愿不去抓。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:5)

将此评论作为答案,因为它原来是解决方案......

如果.error()不存在,那么您可能没有使用Bluebird承诺,因为.error()不是Promise标准的一部分,所以您可能只有内置的承诺而不是蓝鸟的承诺。

检查以确保Bluebird正确包含在您的项目中。

答案 1 :(得分:0)

如果您包含另一个使用不同promise库的包,也会发生这种情况。

就我而言,我有一个需要Swagger的Node应用程序。 Swagger使用Q promise库。

Bluebird和Q部分兼容。直到我开始使用Q没有的Bluebird API的部分时,问题才出现。特别是,蓝鸟有“回归”,而Q没有。 (如果你想浪费一些时间,尝试搜索“蓝鸟回归不是一个功能”。)

有一个项目“bluebird-q”旨在让Bluebird取代Q.

特别是Swagger,有一个标志让Swagger使用承诺。它可能适用于promisifyAll Swagger,而不是使用usePromise配置。