2016-09-29 63 views
-2

我想使用回調函數將數據放入數組中。當我嘗試調用我的回調函數'myCallback'時,出現錯誤,說TypeError: callbackFunction is not a function。這是一個代碼的例子。functionName不是一個函數嗎?

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

那麼你在function2()中定義它們,而function2永遠不會運行......該模式沒有意義... – epascarello

+0

它運行時,我的例子就是這樣。一個例子。它可能看起來不一樣,但它運行.. – IE5Master

+0

那麼你的例子沒有,那就是我們必須去掉的...... – epascarello

回答

2

您重新定義變量,你需要將它傳遞。

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) 
} 

如果這是你的實際代碼,你將與全局變量的問題,如果你有不止一個呼叫。

0

變量名爲callbackFunction傳遞給success函數有任何類型但是函數並且不能被調用。

0

您的代碼不是很完整,但我可以嘗試猜測問題正在消失。您試圖從成功回調中調用範圍方法,但是您通過局部變量忽略了其聲明。

success = function(callbackFunction){ 
    callbackFunction("text");// TypeError: callbackFunction is not a function 
} 

嘗試這樣的:

success = function(){ 
    callbackFunction("text");// TypeError: callbackFunction is not a function 
} 

而且也動回調的聲明是在你的代碼的開頭爲更好的可讀性。

相關問題