首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用时间间隔离子3运行循环

如何使用时间间隔离子3运行循环
EN

Stack Overflow用户
提问于 2019-09-03 11:37:48
回答 4查看 340关注 0票数 0
代码语言:javascript
复制
starttimer() {


    for(let i=0;i<=5;i++)
    {

      console.log(i);
      var loopTimeout = setTimeout( () => {


        console.log("timer");

   }, 3000);
  }

实际产出:

1

2

3.

计时

预期产出: 0 3秒后 1 3秒后 2 3秒后 3.

基于定时,它将执行循环的每一行。

有人知道这件事吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-09-03 11:42:57

您可以使用异步等待来完成此操作:

代码语言:javascript
复制
async function starttimer() {


    for(let i=0;i<=5;i++)
    {
      console.log(i);
      await new Promise(r => setTimeout(r, 3000));    
    }
}

starttimer();
票数 2
EN

Stack Overflow用户

发布于 2019-09-03 11:45:18

您可以使用“承诺”,因为您在同一时间调用了3个超时。

代码语言:javascript
复制
function wait3sec() {
    return new Promise(resolve => { setTimeout(() => resolve("tick"), 3000);});
}

async function startTimer() {
    for (i = 0; i < 3; i++) {
        await wait3sec();
        console.log(i);
    }

}

灵感:异步函数

票数 3
EN

Stack Overflow用户

发布于 2019-09-03 12:06:19

我建议使用异步/等待示例来回答这些问题。它将产生不那么复杂和更易读的代码。

但是,为了向您展示它如何在不需要异步/等待的情况下工作:

代码语言:javascript
复制
function startTimer() {
  let i = 0;

  tick();

  function tick() {
    console.log(i);

    if (i < 3) {
      i ++;
      setTimeout(tick, 3000);
    }
  }
};

startTimer();

诀窍是在i函数之外定义tick,并在tick函数中增加它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57770937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档