javascript - setTimeout函数依次是0,0,0还要0,1,0怎么办?

标签 javascript

我刚刚尝试执行下面的代码

 setTimeout(function(){ console.log(1); }, 0);
 setTimeout(function(){ console.log(2); }, 0);
 setTimeout(function(){ console.log(3); }, 0);

上面的代码按顺序记录了 1、2、3。但是如果我用秒值 0, 1, 1 做同样的事情

setTimeout(function(){ console.log(1); }, 0);
setTimeout(function(){ console.log(2); }, 1);
setTimeout(function(){ console.log(3); }, 0);

上面的代码仍然按顺序记录相同的 1、2、3。在 Chrome 中测试了这一点!

想知道这是否是由于 console.log() 导致的。对此有何意见?

最佳答案

当所述等待时间已经过去时,HTML 标准不要求用户代理严格按照其预期等待时间对排队的计时器事件进行排序。第三次调用 setTimeout、返回原生代码并从事件循环运行第一个 JS 回调很可能需要超过 1 毫秒,因此在重新进入时立即运行第二个回调接下来的事件循环与运行第三个事件循环一样合乎逻辑。

关于javascript - setTimeout函数依次是0,0,0还要0,1,0怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26764399/

相关文章:

javascript - 如何在不使用文件输入的情况下将 zip 文件传递​​到函数中?

javascript - CSV 文件到 Javascript 中的 Json

javascript - Kendo Scheduler 不显示数据

javascript - Express 4 路由器.route : route not found

javascript - 在 redux 中使用 reselect 添加选择器

javascript - 回流/重绘检测 : Possible today? 将来可能吗?

javascript - 如何从 Electron 的渲染器中获取 Node 模块?

javascript - 使用 CSS 允许框水平拉伸(stretch)到给定的空间

javascript - 为什么父级显示子级的 offsetTop 值?

javascript - 使用 jQuery ajax 方法的简单expressjs PUT 处理程序