我正在使用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响应。 Whey不会点击.catch()方法并抛出500?
ANSWER! 在黑客大约半小时后,我想出了这个。谢谢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);
});
答案 0 :(得分:0)
使用线时:
.then(TMatic.send(res, 200))
正在评估该参数,并等待返回一个函数,以便bluebird可以调用它。您应该使用函数,如下所示:
.then(function(res) {
TMatic.send(res, 200);
}