执行命令前的Angular 2等待/超时

时间:2016-07-12 16:41:21

标签: javascript angular

我有以下循环:

for (let i = 0; i < data.numChanges; i++) { 
                    console.log("Try numebr #" + i);
                    this.enemy.image = 'images/items/glasses/glasses.png;
                    //Wait 2 seconds, and show this image:
                    this.enemy.image = oldImage;
                    //Wait 1 second before processing to the next loop item
                }

我需要在评论所在的位置放置哪些代码(请参阅上面的代码)才能使应用程序等待&#34;在执行给定的代码行之前?

这就是我需要做的事情:

  • 旧图像更改后的等待2秒(第一个评论)
  • 在循环结束时等待1秒(第二条评论)

2 个答案:

答案 0 :(得分:14)

我认为这是你正在寻找的东西:

for (let i = 0; i < data.numChanges; i++) { 
  console.log("Try number #" + i);
  this.enemy.image = 'images/items/glasses/glasses.png';
  // Wait 2 seconds, and show this image:
  setTimeout(() => this.enemy.image = oldImage, 2000);
  setTimeout(() => ...some code, 1000)
}

基本上,您将代码包装在setTimeout(() => ..some code, 2000)中。 2000是以ms为单位的等待时间,因此2000ms == 2s。

答案 1 :(得分:0)

我不确定您要达到的目标,但是我将使用一个状态和一个setInterval:

var nbiter=data.numChanges;
var state=0;
var anenemy=this.enemy;
var interF = setInterval(function(){
    switch(state){
    case 0:
        anenemy.image='images/items/glasses/glasses.png';
        state++;
        break;
    case 1:
        state++;
        break;
    case 2:
        anenemy.image=oldimage;
        if(--nbiter==0)
            clearInterval(interF);
        state=0;
        break;
    }
},1000);