将参数从函数传递到其回调

时间:2013-07-16 13:23:15

标签: javascript jquery

这是我的代码:

首先执行该程序:

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
    }
}

问题是,我不知道如何在isOk中获取refresh()变量。有没有办法将变量发送到refresh(),而不是它是一个全局变量?

2 个答案:

答案 0 :(得分:4)

你可以在一个闭包中捕获它:

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
    }
}

答案 1 :(得分:1)

只需将其作为参数传递:

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
 }
}