我正在尝试使用回调函数将数据放入数组中。当我尝试调用我的回调函数'myCallback'时,我收到错误TypeError: callbackFunction is not a function
。以下是代码的示例。
var content = [];
var function1 = function(){
var function2 = function(){
query = function(){
//CAML code
}
success = function(callbackFunction){
callbackFunction("text");// TypeError: callbackFunction is not a function
}
failure = function(){
//Error code
}
}
function2();
runQuery(one, query, success, failure, two);//Main function
}
function1();
function callbackfunction(data){
content.push(data)
}
我正在关注THIS Stack Overflow回答。也许我感到困惑?不清楚为什么在代码中明确定义错误时会抛出错误。
谢谢好朋友。
答案 0 :(得分:1)
您重新定义了变量,需要将其传入。
var content = [];
var function1 = function(callbackfunction){
var function2 = function(){
query = function(){
//CAML code
}
success = function(){
callbackFunction("text");// TypeError: callbackFunction is not a function
}
failure = function(){
//Error code
}
}
function2();
runQuery(one, query, success, failure, two);//Main function
}
function1(callbackfunction);
function callbackfunction(data){
content.push(data)
}
如果这是您的实际代码,如果您拨打多个电话,则会遇到全局变量问题。
答案 1 :(得分:0)
名为callbackFunction
的变量传递给success
函数的任何类型但是函数不能被调用。
答案 2 :(得分:0)
您的代码不是很完整,但我可以尝试猜测问题正在消失。您正试图从成功回调中调用范围方法,但是您通过局部变量覆盖了它的声明。
success = function(callbackFunction){
callbackFunction("text");// TypeError: callbackFunction is not a function
}
试试这样:
success = function(){
callbackFunction("text");// TypeError: callbackFunction is not a function
}
并且还将回调的声明移到代码的开头,以提高可读性。