functionName不是函数?

时间:2016-09-29 19:17:04

标签: javascript function callback

我正在尝试使用回调函数将数据放入数组中。当我尝试调用我的回调函数'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回答。也许我感到困惑?不清楚为什么在代码中明确定义错误时会抛出错误。

谢谢好朋友。

3 个答案:

答案 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
}

并且还将回调的声明移到代码的开头,以提高可读性。