由于某些我无法找到的原因,这段简单的代码无法正常工作。
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
,则运行正常。我宁愿不去抓。
我在这里缺少什么?
答案 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配置。