函数内部的两个回调函数未同步调用

时间:2013-07-22 18:51:29

标签: javascript jquery ajax callback asynccallback

    function sample() {

        var callback_1 = request1(function(response) {

            var Name = response.name;

        });


        var callback_2 = request2(function(response_1) {

                if (response_1.name === Name) {

                    // do something      
                });
        }

}

我有两个回调函数,如上所示, callback_1& callback_2 ,它从服务中请求JSON。

callback_1 之前调用 callback_2 ,并且变量名称显示为未定义。任何帮助非常感谢,

如何在 callback_2 之前执行callback_1,以便未定义变量名称

2 个答案:

答案 0 :(得分:4)

试试这个:

function sample() {

    var callback_1 = request1(function(response) {
        var Name = response.name;

        var callback_2 = request2(function(response_1) {
            if (response_1.name === Name) {
                // do something      
            }
        });
    });

}

答案 1 :(得分:2)

jQuery ajax请求返回一个延迟对象(假设request1和request2是某种类型的ajax调用)。看看http://api.jquery.com/category/deferred-object 您可以使用以下内容:

function sample() {
    var Name;
    var callback_1 = request1(function(response) {
        Name = response.name;

    });


    callback_1.then(
        callback_2 = request2(function(response_1) {

            if (response_1.name === Name) {

                // do something      
            };
        })
    );

}