2

http://jsfiddle.net/f4hmL/235/

function showData() {
    alert("boop!");
}

function method1() {
    var dfd = $.Deferred();
    setTimeout(dfd.resolve(), 10000);
    return dfd.promise();
}

function method2() {
    var dfd = $.Deferred();
    setTimeout(dfd.resolve(), 6000);
    return dfd.promise();
}

$.when(method1(), method2()).then(showData);​

両方の遅延オブジェクトが解決されたときにのみ「ブープ」が表示されることを望んでいましたが、すぐに表示されます。これを達成することは可能ですか?jQueryの「when」メソッドは使用する正しい関数ですか?

4

1 に答える 1

3

あなたは正しいことをに渡していないsetTimeout()。すぐに呼び出して、その結果を次の行dfd.resolve()に渡すため、これは機能しません。setTimeout()

setTimeout(dfd.resolve(), 10000);

代わりに、次のようなものが必要です。

setTimeout(function() {dfd.resolve()}, 10000);

タイムアウトが発生するまで、これは解決を呼び出しません。

于 2012-10-13T22:50:38.177 に答える