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 に答える