以前使用していた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(){...}