【发布时间】:2017-08-04 20:34:38
【问题描述】:
我无法理解打印的输出为什么要执行此代码:
1 2 未处理的拒绝错误:已调用回调。
查询成功时似乎 then 和 catch 都执行了。
有什么想法吗?
干杯
async.series([
function(callback) {
db.none(query)
.then(function () {
return callback(null, true);
})
.catch(function (err) {
return callback(err, null);
});
},
function(callback) {
db.any(query)
.then(function (data) {
console.log('1')
return callback(null, data);
})
.catch(function (err) {
console.log('2')
console.log(err);
return callback(err, null);
});
}
],
function(err, results) {
if (results && !results[1].isEmpty()) {
// do something
}
});
编辑:
TypeError: results[1].isEmpty is not a function
问题似乎来自其余代码,只是一个简单的未定义函数错误,谢谢。
但我还是不明白:为什么这个错误是在第二个查询中而不是在异步查询之外捕获的?
【问题讨论】:
-
您是否尝试过
console.log(err)并查看它是否能让您了解问题所在? -
谢谢,我以为我已经做到了,但有时我忘记了最简单的事情:-)
-
不要将 async.js 与 promise 一起使用!!!
-
我能问为什么吗?我不得不这样做,因为我正在使用 pg-promise 模块来使用 postgres
-
因为 Promise 已经包含你需要的所有实用程序,并且试图在它们之上放置回调只会导致诸如此类的错误(并且通常是非常容易出错的代码)。
标签: javascript node.js asynchronous promise pg-promise