0

以前使用していたsetTimeOutの代わりに$.Deferredsを使用しようとしています。writer()が実際には実行されていないため、問題が発生しています。これは、printer()が呼び出されたときに$.eachがまだループしているためです。

ループのある$.Deferredsの例は見たことがありません。明らかに以下は間違っています、そして私はそれが解決と関係があると確信しています-どんな助けもいただければ幸いです。

$.when( writer() ).done(function() {
    printer();
});


function writer(){
    var deferred = new $.Deferred();
    if(x){
        $("a").each(function () {...});
    }
    if(y){
        $("img").each(function () {...});
    }
    if(z){
        $("div").each(function () {...});
    }
    deferred.resolve();
    return deferred.promise();

}

function printer(){...}
4

1 に答える 1

0

...内部が非同期イベントを実行していると仮定すると、解決をトリガーするためにに.each渡すことができる遅延オブジェクトを返すために、これらの非同期イベントのすべてが必要になります。$.when

また、コードの先頭では$.when、単一のコールバックは必要ありません。writer().done(function(){...})

于 2013-03-12T14:28:48.147 に答える