非同期each()関数
jquery each()関数を実行すると、反復中にブラウザーがロックされる本当に複雑なドキュメントがある場合、またはInternet Explorerが「このスクリプトの実行を継続しますか?」というメッセージをポップアップする場合、このソリューションは1日を節約します。
jQuery.forEach = function (in_array, in_pause_ms, in_callback)
{
if (!in_array.length) return; // make sure array was sent
var i = 0; // starting index
bgEach(); // call the function
function bgEach()
{
if (in_callback.call(in_array[i], i, in_array[i]) !== false)
{
i++; // move to next item
if (i < in_array.length) setTimeout(bgEach, in_pause_ms);
}
}
return in_array; // returns array
};
jQuery.fn.forEach = function (in_callback, in_optional_pause_ms)
{
if (!in_optional_pause_ms) in_optional_pause_ms = 10; // default
return jQuery.forEach(this, in_optional_pause_ms, in_callback); // run it
};
最初に使用する方法は、each()と同じです。
$('your_selector').forEach( function() {} );
オプションの2番目のパラメータを使用すると、反復間での速度/遅延を指定できます(アニメーションのために有用である可能性がある次の例では、反復間で1秒を待機します):
$('your_selector').forEach( function() {}, 1000 );
これは非同期で機能するため、次のコード行の前に反復が完了しているとは限りません。
$('your_selector').forEach( function() {}, 500 );
// next lines of code will run before above code is complete
私はこれを社内プロジェクトのために書きましたが、改善できると確信していますが、私たちが必要とするものでうまくいきました。ありがとう-