0

順番に実行する一連の関数がありますが、最初の関数には非同期サブ関数があります。非同期関数が完了した後にのみ、2 番目に高いレベルの関数を実行したいと考えています。これを行う方法はありますか?

ファイル A:

one();
two(); // I don't want this to run until after one()'s $.ajax success callback

function one() {
    doSomethingElse();
    $.ajax(url, {data: data}, function(){
        // do two();
    });
}
4

3 に答える 3

1

AJAX オブジェクトを返すように関数を変更します。

function one() {
    doSomethingElse();

    return $.ajax({
        url: url,
        data: data
    });
}

そして今、次のことを行います。

one().done(function() {
    two();
});

two()コールバックに直接入れるよりも少しきれいです。

于 2013-05-15T19:39:40.007 に答える
0
function one() {
    doSomethingElse();
    $.ajax(url, {data: data}, function(){
        // do two();
        two();
    });
}

function two(){
alert("here");
}
于 2013-05-15T19:40:42.977 に答える
0

約束はあなたの目的にとって最良の選択肢です

jQuery deferred と promise - .then() と .done()

于 2013-05-15T19:38:30.407 に答える