2012-03-21 8 views
0

これは間違った質問です。私は.eachを使用して画像のコレクションをループし、各画像のメモリ負荷をかけて実際の幅と高さを確認しています。次に、これらの図を使用して配列に値を設定します。問題は、私の仕事を続けるためにループが完了するまで待つことです。jquery .each()ループが終了するのを待つ

$.each(items, function(){ 
    $('<img/>').attr('src', $(this).attr('src')).load(function(){ 
      myArray.push(this.width); 
      myArray.push(this.height); 
    }); 
}); 
console.log(myArray.length); 

.eachループが完了する前にconsole.logが実行されていると思われるため、コンソールには常に0が記録されます。それは正しいでしょうか?そしてどうやってそれを丸めるのですか?本当にありがとう。

+1

'$ .each'は非同期ではなく、' .load'はです。 –

+0

イメージは非同期にロードされるので、どのように処理する必要がありますか?画像の読み込みが完了するたびに、 'push'の直後に呼び出しを入れて配列の長さを記録することができます。または、Rodyが同期呼び出しを代わりに行うことを提案したからです。どんなふるまいが必要ですか?明らかに、あなたはあなたの質問の状態よりも多くをやろうとしています。 – mrtsherman

+0

最後のゲームでは、数とサイズが変わる可能性のあるいくつかの画像をロードし、両方の上限と上限を見つけるためにすべての幅と高さを比較する必要があります。私はまた、コードにさらに使用するために、配列に幅と高さの両方を格納する必要があります。 –

答えて

1

onloadを増やして値を次のループと比較します。

擬似コード:

i=0; 
if(i<images){ 
load image here 
image.onload = i++; 
} 
+0

私は各ループ内で比較を行いますか? –

+0

あなたはループ内のインクリメントを行い、ループの前に値をチェックします – justanotherhobbyist

+0

申し訳ありません。今日は完全に暗いです。私はコンセプトを理解していますが、それを自分のコードの文脈に当てはめることはできません。どのように各ロードループに収まるでしょうか? –

1

loaddocsと呼ばれます。各ループは終了しましたが、イメージのロードが完了しません。

+0

K.どうすれば問題を解決できますか? –

+0

本当にすばやく複雑になります。すべての画像がロードされるとどうなりますか?イメージの一部だけが読み込まれるとどうなりますか?画像が1つもロードされない場合はどうなりますか?閉じられたカウンタを追加して、それぞれの 'load'コールバックがカウンタをインクリメントし、すべてのイメージがロードされたかどうかを確認することができます。 – zzzzBov

+0

私はあなたが何を意味するかを見ます。何がそんなにシンプルなものが難しいのですか?楽しい。 –

2

負荷が実際に非同期に実行されます。

あなたは(ちょうど私の頭の外に、テストされていない)のようなもの、あなたが同期するコールを設定することができ、このようにjQueryのAjaxのメソッドを使用することができます。

jQuery.ajax({ 
    url: 'http://url-to-img', 
    success: function(result) { 
       myArray.push(this.width); 
       myArray.push(this.height); 
       }, 
    async: false 
}); 

はトリックを行う必要があります。詳細については、JQueryサイトのJquery ajaxリファレンスドキュメントをご覧ください。http://api.jquery.com/jQuery.ajax/

同期クロスドメインコールを使用することはできません。

+0

提案していただきありがとうございますが、私が直面している他の問題は、これらの画像が別のドメインから読み込まれていることです。そして、私は実際に画像を読み込むためにプロキシを使うという問題に夢中になりたくありません。再度、感謝します。 –

+0

whenSyncプラグインがあなたのために何かをしているのでしょうか? http://www.bennadel.com/blog/2326-jQuery-whenSync-Plugin-For-Chaining-Asynchronous-Callbacks-Using-Deferred-Objects.htm –

関連する問題