gpt4 book ai didi

node.js - Blubird 从不点击 .catch 语句

转载 作者:可可西里 更新时间:2023-11-01 11:36:26 24 4
gpt4 key购买 nike

我正在使用 Node.js、Bluebird 和 Redis。鉴于:

redisClient.hmsetAsync([key, 'sn', sn, 'make', make])
.then(redisClient.setAsync(key + ":radio", radioArray))
.then(TMatic.send(res, 200))
.catch(function (e) {
console.log("Error reading file", e);
TMatic.send(res, 500);
});

当“radioArray”为空时,redis抛出异常:

Unhandled rejection Error: ERR wrong number of arguments for command

此代码始终发回 200 响应。为什么它没有命中 .catch() 方法并抛出 500?

回答!经过大约半小时的黑客攻击,我想出了这个。谢谢 macareno.marco!

redisClient.hmsetAsync([key, 'sn', sn, 'make', make])
.then(function saveRadios() {
if (radioArray.length) {
console.log("radio");
return redisClient.setAsync(key + ":radio", radioArray)
}
})
.then(function () {
TMatic.send(res, 200);
})
.catch(function (e) {
console.log("Error:", e);
TMatic.fail(e, res);
});

最佳答案

使用线路时:
.then(TMatic.send(res, 200))
正在评估参数,并等待返回一个函数,以便 bluebird 可以调用它。您应该改用函数,如下所示:

.then(function(res) {
TMatic.send(res, 200);
}

关于node.js - Blubird 从不点击 .catch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32787392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com