[英]$.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.