javascript - 使用 setTimeout 延迟 $.each() 函数

标签 javascript jquery each timing

大家好。

我有这个简单的代码:

totalTextArray = textForChatWithSeparators.split("#");    
    $.each(totalTextArray, function( index, value ) {           
    setTimeout(function(){console.log( value )},1000);
});

我希望在控制台日志中看到,每秒记录“value”,但我看到所有日志在延迟 1 秒后在一个 block 中出现。

我做错了什么?我在想函数内部的函数可能会导致一些缓冲问题?

最佳答案

你正在做的是

  • 调用 setTimeout n
  • 所有 timeouts 将在 1000ms 后触发

如果你不想改变结构,你需要做的是增加每次迭代的超时值,比如

setTimeout(function(){ console.log( value ) },1000*index);

一个可能更优雅(也是更正确的方法 imo)是一起改变循环的结构。使用像

这样的间隔计时器
(function _loop( elem ) {
     console.log( elem );        

     if( totalTextArray.length ) {
         setTimeout( _loop.bind( null, totalTextArray.shift() ), 1000 );
     }
}());

关于javascript - 使用 setTimeout 延迟 $.each() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23756201/

相关文章:

javascript - 如何显示具有 XML 数据的字符串

javascript - Android 版本上的 React Native 应用程序显示 "Unable to load script from assets' index.android.bundle'“需要重新启动系统

javascript - jQuery 自动完成与多个输入上的 getJSON 搜索

javascript - z-index 和 Javascript 事件

javascript - 使用 jquery 打印 iframe 内容

jQuery 均匀高度 float LI

arrays - 如何将像这样的数组 ["John,Doe,11222019", "Mark,King,11232019", "Angle,Darma,11242019"] 转换为哈希 Ruby 数组

Jquery 弹跳图像

javascript - 错误率: jquery file upload on submit form button

javascript - 我该如何修复这个 mongodb 错误? : MongoError: The dollar ($) prefixed field '$cond' in 'energy.$cond' is not valid for storage