javascript - 具有可变延迟和等待的 Angular 4 setTimeout()

标签 javascript angular typescript

我有一个带有timestamp 的事件列表。 我想要的是根据 timestamp 显示事件:

添加延迟:

delay = timestamp(t+1) - timstamp(t)

我知道这不适用于 setTimeout,但有一个解决方法,如果超时是恒定的,在我的情况下不是。

是否可以让下一个setTimeout()等待上一个?具体来说,如果第一个setTimeout()有5秒的延迟,第二个有3秒,那么第二个会先出现。我希望它们按相同的顺序执行,但一个接一个地执行。

此示例适用于恒定延迟,但我想根据迭代列表所获取的信息来计算延迟。

for (i = 1; i <= 5; ++i) {
  setDelay(i);
}

function setDelay(i) {
  setTimeout(function(){
    console.log(i);
  }, 1000);
}

最佳答案

您可以使用 IIFE (Immediately Invoked Function Expression)和函数递归代替。像这样:

let i = 0;
(function repeat(){
  if (++i > 5) return;
  setTimeout(function(){
    console.log("Iteration: " + i);
    repeat();
  }, 5000);
})();

现场 fiddle here .

关于javascript - 具有可变延迟和等待的 Angular 4 setTimeout(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52110419/

相关文章:

javascript - 将 3 个流与 Observables 串联和并行组合

javascript - Angular 2/4 : call function for each row in NgFor

angular - 有什么方法可以更改 Angular Material 上的浏览器自动完成视觉效果吗?

typescript - 有什么理由在 TypeScript 中使用静态/私有(private)静态方法吗?

typescript - 是 :[Interface] a valid array definition in Typescript?

javascript - 使用 PHP 从另一个页面获取内容

javascript - 如何使用 style.left 从右向左移动图像?

javascript - 如何使用 html/javascript 在 Firefox 中禁用斜杠和撇号键弹出快速查找?

javascript - 谷歌地球引擎: Region of Landsat Image

javascript - 初始化自定义类