我正在对Redis进行异步调用并尝试使用回调来通知async.js查询已完成。我一直遇到一个错误,说明"回调不是一个功能"。
我在这里做错了什么?
"check": function (redisListItem, dataElement, callback) {
let lookupKey = redisListItem.table + dataElement;
let virtualField = redisListItem.virtualName;
client.get(lookupKey, function (err, reply) {
if (err) {
return callback(err)
}
else {
session.virtual[virtualField] = reply;
callback(session);
}
});
}
拨打"检查"正在做如下:
"condition": function(R) {
var self = this;
async.series([
function(R){
/////////THE CALL TO CHECK ////////
R.check(List.redisTables.List.negEmail, self.customer.email)
}.bind(this,R),
function(R) {
R.when(this.virtual.negEmail === "true")
}.bind(this,R)
])
}
答案 0 :(得分:6)
R.check(List.redisTables.List.negEmail, self.customer.email)
只有两个参数,第三个参数,应该是一个函数,缺少,即它未定义
R.check(List.redisTables.List.negEmail, self.customer.email, function(session) {
// do something when "check()" has completed
})
作为旁注,您应该坚持使用Node约定,并传递错误和数据
client.get(lookupKey, function (err, reply) {
if (err) {
return callback(err, null)
} else {
session.virtual[virtualField] = reply;
callback(null, session);
}
});
这样你就可以实际检查错误
R.check(List.redisTables.List.negEmail, self.customer.email, function(err, session) {
if (err) throw new Error('fail')
// do something when "check()" has completed
})