如何将参数传递给回调并且不丢失绑定?

How to pass argument to callback and don't lose bind?

我有以下代码:

$.getJSON('getAllTerminals.json', renderTerminalsOnMapAndFitBounds.bind({index:globalRequestCounter++, navigateToTypedText:true}))

...
function renderTerminalsOnMapAndFitBounds(data, updateSelectedTerminals) {
        renderTerminalsOnMap.call(this,data);
        fitBounds();
        if(this.navigateToTypedText === true){
            navigateMapToTypedAdress();
        }
        if (updateSelectedTerminals) {
            $.getJSON('getSelectedTerminals', {}, function (json) {
                window.MARC.addTerminalPage.terminalsSelected = json;
                update();
                initPage();
            });
        }
    }

你能告诉我如何让一切都像现在一样工作,但 renderTerminalsOnMapAndFitBounds 被传递 updateSelectedTerminals 为真吗?

不,您不能使用 bind 来部分应用非初始参数(并且没有 flip)。只需使用一个函数表达式:

$.getJSON('getAllTerminals.json', function(data) {
    renderTerminalsOnMapAndFitBounds.call({
        index:globalRequestCounter++,
        navigateToTypedText:true
    }, data, true);
});

如果必须使用绑定,请更改 renderTerminalsOnMapAndFitBounds 的参数顺序,或者使其接受 updateSelectedTerminals 参数作为 this 对象的 属性 .