0

我有 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()了,但它似乎没有用。

4

3 回答 3

2

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

根据评论进行编辑

如果要在内部f1和外部调用回调,可以返回.pipe方法的结果。

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

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

f1().done(f2);
于 2012-07-14T08:41:07.630 回答
1
function f1(onsuccess) 
{
    $.ajax(
    { 
        success: function(r) 
        { 
            // some code
            onsuccess(r);
        }
    });
}

function f2() 
{
    // my code
}

f1(f2);
于 2012-07-14T08:45:43.817 回答
0

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

这样做有问题吗?

于 2012-07-14T08:39:53.740 回答