私は次の場所に投稿されたプラグインコードを使用しています:
...これは本質的に非同期タイマーループです:
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
};
この素晴らしいコミュニティの助けを借りて、私は「真に戻る」ことを学びました。または「falseを返します。」ループの次の反復に進むのと同じ効果があります。
また、プログラムで$ .forEachループ呼び出しを完全に強制終了(破棄)し、残りの反復を実行できないようにします。
このプラグインにメソッドを追加して、同時に実行されている他の呼び出しに影響を与えずに、プラグインへの特定の呼び出しを強制終了できるようにするにはどうすればよいですか?
私は次のような変数に呼び出しを割り当てることを考えました:
var foo = $.forEach(json, 1000, function(idx,item) { /* do stuff */ });
...後で他のインスタンスに影響を与えずに特定のインスタンスを参照するには、killメソッドを追加してfooで呼び出すにはどうすればよいですか?ajax呼び出しで使用されるfoo.abort()と同等のものが必要です。
できますか?もしそうなら、どのように?