我正在使用发布在以下位置的插件代码:
...这本质上是一个异步计时器循环:
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
};
在这个伟大社区的帮助下,我了解到如果我“回归真实”;或“返回错误;” 它与继续循环的下一次迭代具有相同的效果。
我想做的是以编程方式完全杀死(销毁) $.forEach 循环调用,不允许剩余的迭代运行。
我如何向该插件添加一个方法,以允许我终止对该插件的特定调用,同时不影响同时运行的其他调用?
我考虑过将调用分配给这样的变量:
var foo = $.forEach(json, 1000, function(idx,item) { /* do stuff */ });
...稍后引用特定实例而不影响其他实例,但是如何添加 kill 方法并在 foo 上调用它?我需要与 ajax 调用一起使用的 foo.abort() 等效项。
可以做到吗?如果是这样,怎么做?