$.getJSON 回调帮助 - 不是函数

$.getJSON Callback Help - Not a Function

我的上下文如下:

我有一个变量 'qq' - 我想通过 API 调用将数据分配给这个变量,一旦分配了数据,我就在 [=47] 中使用这个数据=] 进程.

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 控制台出现以下错误:

未捕获类型错误:回调不是函数

我尝试了以下方法 - 似乎有效:

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

但这在我的上下文中并不理想,因为我想调用 dataLoader('Prov',XXX()) 其中 XXX() 可能是使用 qq[ 中新加载的值的许多不同函数=12=]

有什么关于我错过船的地方的建议吗?

变化:

dataLoader('Prov', sayIamDone());

dataLoader('Prov', sayIamDone);

因为:

sayIamDone是函数,sayIamDone()是function.Normally的结果,sayIamDone()undefined或return中的值sayIamDone;

想使用参数吗?你可以这样做:

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

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

或更多参数?您可以通过 spread

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

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

通过 运行 dataLoader('Prov', sayIamDone()); 您将传递给 dataLoader sayIamDone 函数的 结果 。你必须传递它 不带 括号才能传递函数本身。

dataLoader('Prov', sayIamDone);