回调不是一个函数:我做错了什么
callback is not a function: what am i doing wrong?
我正在对 Redis 进行异步调用并尝试使用回调来通知异步.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)
])
}
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
})
相关文章:
- 基于窗口宽度jquery的函数的替代方法是什么
- 如果在构造函数中有“返回”,则在 JavaScript 中的新运算符中做了什么
- 未捕获的类型错误:topFrame.window.changeSelectedBarStyle不是函数,原因是什么
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- 在递归生成器函数中,yield后面的*(星号/星号)语法意味着什么
- 在什么情况下需要同时使用compile&链接函数的角度
- 当一个重要的构造函数参数丢失时应该发生什么
- 当绑定到AngularJS中的函数时,会在后台发生什么
- 缓存!saveLocations()和addLocation()函数有什么区别
- 函数(i,val)在javascript中是什么意思
- 鉴于 for..在构造中,库提供的函数(如 jQuery.map() 或 _.each())有什么用
- 如果 JS 中的函数是一流的,那么在定义它们之前允许调用它们是什么
- undercore.js_.tap()函数什么是方法链
- 淘汰抛出消息:类型错误:
不是一个函数.什么意思 - JavaScript 函数什么是范围以及为什么使用 $
- jQueryAJAX函数什么都没做
- 用".then"链接bluebird中的异步函数.什么是最好的方法
- 为什么这个函数什么也不返回?
- 将参数传递给函数.什么'It’他错了
- 我有节点JS错误的日期函数什么地方出了问题