函数的JavaScript / jQuery回调

时间:2012-07-14 08:37:52

标签: javascript jquery asynchronous

我有2个功能。

function f1() {
    $.ajax(..., success: function(response) {
        // some code executed whenever request is completed.
    }
}

function f2() {
    // my code
}

我需要一个接一个地调用这些函数。

f1() // waiting until ajax request in the function is complete.
f2()

我尝试了$.when().then(),但它似乎无效。

3 个答案:

答案 0 :(得分:2)

$.ajax调用返回$.Deferred的实例,该实例用于跟踪调用的进度 - 这是您需要从f1函数返回的内容。然后,您可以使用.then().done()

编辑以回应评论

如果您想在f1内以及外部调用回调,则可以返回.pipe方法的结果。

function f1() {
    return $.ajax(/*...*/).pipe(function() {
        //local 'done' handler
    });
}

function f2(resultFromF1Handler) {
    //...
}

f1().done(f2);

答案 1 :(得分:1)

function f1(onsuccess) 
{
    $.ajax(
    { 
        success: function(r) 
        { 
            // some code
            onsuccess(r);
        }
    });
}

function f2() 
{
    // my code
}

f1(f2);

答案 2 :(得分:0)

我建议在匿名函数中调用f2(),该函数作为f1()的成功执行。

这样做有问题吗?