簡體   English   中英

$ .getJSON回調幫助-不是函數

[英]$.getJSON Callback Help - Not a Function

我的情況如下:

我有一個變量'qq'-我想通過API調用將數據分配給該變量,一旦分配了數據,就可以在繪畫/裝訂過程中使用此數據。

API調用並分配給var'qq'可以正常工作-但我似乎無法使我的回調正常工作-我不斷收到錯誤消息:callback()不是函數

這是我的代碼當前的樣子:

 var qq = []; // binding function - to be run after data loader has completed function sayIamDone() { alert('I Am Done'); // do data bindings with qq } // load data from api into var qq function dataLoader(inp,callback) { let url = 'http://localhost:65232/api/layercolor/' + inp; console.log(url); $.getJSON(url,function(result) { qq = eval('({' + result + '})'); //console.log(qq); callback(); }); } // call data loader dataLoader('Prov', sayIamDone()); 

從以上內容,我在Chrome控制台中收到以下錯誤:

未捕獲的TypeError:回調不是函數

我嘗試了以下方法-似乎可行:

 dataLoader('Prov', function () { alert('I Am Done');}); 

但這在我的上下文中並不理想,因為我想調用dataLoader('Prov',XXX()),其中XXX()可能是使用qq中新加載的值的許多不同函數

關於我想念船的地方有什么建議嗎?

更改:

dataLoader('Prov', sayIamDone());

dataLoader('Prov', sayIamDone);

因為:

sayIamDone是函數, sayIamDone()是函數的結果。 sayIamDone()sayIamDone()undefined或者在sayIamDone返回值;

要使用參數嗎?可以執行以下操作:

dataLoader('Prov', callFunc(n));

function callFunc(arg) {
    return function() {
        sayIamDone(arg);
    };
}

或更多論點?您可以通過傳播做到這一點

dataLoader('Prov', callFunc(n));

function callFunc(...arg) {
    return function() {
        sayIamDone.apply(null, arg);
    };
}

通過運行dataLoader('Prov', sayIamDone()); 您正在將sayIamDone函數的結果傳遞給dataLoader 您必須不帶括號地傳遞它,以傳遞函數本身。

dataLoader('Prov', sayIamDone);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM