簡體   English   中英

將參數從函數傳遞到其回調

[英]Passing parameters from function to its callback

這是我的代碼:

首先執行程序在這里:

refreshTree(function() {
            $.ajax({
                type: "POST",
                url: "/ControllerName/MethodName1",
                success: function (data) {
                    refresh();
                }
            });
        });

這是refreshTree()的定義:

function refreshTree(callback) {
    var isOk = true;
    $.ajax({
        type: "GET",
        url: "/ControllerName/MethodName2",
        success: function(data) {
            if (data == 'True') {
                isOk = false;
            }
            callback();
        }
    });
}

這是refresh()方法:

function refresh() {
    if (isOk) {
        //do something
    }
}

問題是,我不知道如何在refresh()獲取isOk變量。 有沒有某種方法可以將變量發送到refresh()而不將其作為全局變量?

您可以在此處將其捕獲為閉包:

refreshTree(function(isOk) {
    $.ajax({
        type: "POST",
        url: "/ControllerName/MethodName1",
        success: function (data) {
            refresh(isOk);
        }
    });
});

並在這里傳遞:

function refreshTree(callback) {
    var isOk = true;
    $.ajax({
        type: "GET",
        url: "/ControllerName/MethodName2",
        success: function(data) {
            if (data == 'True') {
                isOk = false;
            }
            callback(isOk);
        }
    });
}

和這里:

function refresh(isOk) {
    if (isOk) {
        //do something
    }
}

只需將其作為參數傳遞:

refreshTree(function(status) {
        $.ajax({
            type: "POST",
            url: "/ControllerName/MethodName1",
            success: function (data) {
                refresh(status);
            }
        });
    });

refreshTree()函數:

function refreshTree(callback) {
var isOk = true;
$.ajax({
    type: "GET",
    url: "/ControllerName/MethodName2",
    success: function(data) {
    var isOk=true;
        if (data == 'True') {
            isOk = false;
        }
        callback(isOk);
    }
});

}

Refresh()方法:

function refresh(status) {
if (status) {
    //do something
 }
}

暫無
暫無

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

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