0

これに対する解決策をあらゆる場所で検索しましたが、これまでのところ何も見つかりませんでした(おそらく間違ったキーワードを使用している可能性があります! これが重複している場合は、指摘してください。削除します)

優秀な SO の天才の 1 人が、次のことが期待どおりに機能しない理由を親切に説明してくれませんか? これが意味するのは、コールバック内で完了するcomplete前にコールバックが呼び出され、その理由がよくわかりません。setTimeoutsuccess

$.ajax({
    url: options.url,
    data: options.data,
    success: function(){
        setTimeout(function(){
            console.log('firing');
        },2000);
    },
    dataType: options.dataType,
    complete: function(){
        console.log('ended');   
    }
});

コールバックsetTimeout内で新しいスレッドが開始されたためですか?success

コールバック関数をコールバックに渡さずにこれを達成することは可能successですか?

4

1 に答える 1

4

setTimeout()これは、コードの実行をブロックしないために発生します。

したがって、completeコールバックは、への呼び出しがない場合と同じ瞬間に発生しますsetTimeout()

console.log('ended');呼び出しをタイムアウトにするか(あまりにも)、タイムアウト内に完全なハンドラーを呼び出す必要があります。:)

于 2013-02-08T10:23:11.007 に答える