javascript - 如何在不同的时间触发不同的 setInterval 函数?
问题描述
假设我有
let boo = setInterval(() => console.log('boo'), 5000);
假设我想添加另一个间隔函数,但我想确保它不会同时启动:
let bla = setInterval(() => console.log('bla'), 5000);
有没有办法检查第一个boo
间隔何时触发并确保发生这种bla
情况,不是同时发生,而是在 2500 ms 之后boo
?
解决方案
但我想确保它不会同时启动
它不能。JavaScript 在领域内运行单个线程(松散地,页面/选项卡)。从头到尾,该线程一次只做一件事。因此,即使这些计时器在同一微秒内触发,执行这些回调的作业也会进入同一个队列,并且线程一次处理一个。
如果计时器回调正在完成的工作启动了一个异步进程,则第二个计时器调用可以在计时器回调启动(并返回)之后但在异步工作完成时进入。如果你想防止这种情况,你必须在两者之间进行一些手动同步。
有没有办法检查第一个 boo 间隔何时会触发并确保 bla 发生,而不是同时发生,而是在 boo 之后 2500 ms 发生?
我可能会通过使用单个计时器来做到这一点:
let flag = true;
setInterval(() => {
if (flag) {
console.log("boo");
} else {
console.log("bla");
}
flag = !flag;
}, 2500);
推荐阅读
- javascript - 编写高阶箭头函数
- selenium-webdriver - 无法在下拉列表中选择元素,因为元素不可交互
- rust - 生成模块功能文档,如结构方法
- javascript - 多个 div 跟随鼠标的工具提示
- matlab - 如何使用 POS 标签作为特征
- batch-file - 如何在不知道该文件的完整路径的情况下使用批处理脚本复制文件?
- python - 如何使用来自输入的特定键/值对从另一个 JSON 创建 JSON 结构
- docker - 如何知道使用哪个基础镜像来构建镜像?
- angular - 使用材料时间选择器时如何仅启用小时?
- javascript - 如何让我的表格正确显示分组数据?