jquery - 定义 jQuery.each() 循环步骤之间的超时

标签 jquery delay synchronous each delayed-execution

据我所知, $.each() 是一个同步函数,所以我认为,以某种方式它必须是可能的 - 通过某种技术 - 延迟循环的步骤通过数组。

我还没有找到合适的方法。我如何正确设置其步骤的超时?

更新:

问题是,为什么我需要这个,是循环中的步骤数和计算量很大,它们使异步函数太慢。我想为他们节省一些处理器速度,并通过这种延迟定义“优先级”。我在循环步骤中使用非回调函数,主要是 jQuery.css()。

重要:

我正在寻找一种技术来设置步骤之间的延迟,以减少计算量,而不是使用循环设置大量超时,从而按时间运行。

最佳答案

我建议不要使用.each(),而是手动循环集合。:

HTML

<div class="foo">A</div>
<div class="foo">B</div>
<div class="foo">C</div>
<div class="foo">D</div>
<div class="foo">E</div>

Javascript

var collection = $('.foo');
if( collection.length > 0 ){
    var i = 0;
    var fn = function(){
        var element = $(collection[i]);
        console.log(i + ' (' + element.text() + ') : %o', element);
        // Do whatever
        if( ++i < collection.length ){
            setTimeout(fn, 5000);
        }
    };
    fn();
}

如果您愿意,可以相当容易地包装到 $('.foo').delayedEach(5000, function(){}) 扩展中。

Working fiddle

关于jquery - 定义 jQuery.each() 循环步骤之间的超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23800062/

相关文章:

javascript - 如何监听 Slimscroll "scroll"事件?

jquery - 删除点击事件的delay()

javascript - 从 node.js 纤维 future 返回值

javascript - plupload上传+同步表单问题

javascript - 使用 Bootstrap 验证器验证后停止表单提交并打开 Bootstrap 模式(确认对话框)

jquery - Gingerbread 浏览器跨域响应串联错误

swift - 在 Swift 中,如何更改按钮上的图像并在用户看到原始图像(即翻转卡片)后将其更改回来?

ios - 如何将代码执行移至主队列

javascript - 我的联系人 HTML 页面重定向到我的联系人 PHP 并且不发送电子邮件

iphone - iOS - 速度问题