setTimeout用于嵌套if for循环中的条件

时间:2013-11-26 13:21:08

标签: javascript loops for-loop nested settimeout

我对setTimeout命令感到有些困惑。以下代码获取文本并在console.log()字段中返回单个单词。但当然这个过程会立即进行。我想setTimeout进程,所以代码会给我一个例如每秒一个单词。我在for循环中对嵌套的if条件有点麻烦,并且没有设法在这个板上找到解决方案或者自己编写代码。

如果你能帮助我,那就太棒了。非常感谢。 :)

罗伯特

text = "test text bla blah blah blah Eric \
blah blah blah Eric blah blah Eric blah blah \
blah blah blah blah blah Eric";

var space = " ";
var h = 0;
var hits = [];
var word;


for (var h=0; h < text.length ; h++){

       if (text[h]== space){

       h=h+1;
       console.log(word);
       hits=[];

       }


hits.push(text[h]);
var word = hits.join("");

}

if (h=text.length)
       {
       console.log(word);
       }

2 个答案:

答案 0 :(得分:1)

  • 按行距.split(' ');
  • 拆分
  • 使用setInterval();
  • 完成后clearInterval();

结果:

var text = 'Powder gummies muffin jelly-o jelly cookie chocolate bar pudding';

var words = text.split(' ');
var i = 0;

var interval = setInterval(function(){
  var word = words[i];
  if(word) {
    console.log(word);
    i++;
  } else {
    clearInterval(interval);
  }
},1000);

答案 1 :(得分:1)

试试这个:

var text = "one two three four five blah1 blah2 blah3";

var words = text.split(" "); // split the text into an array of words
var pointer = 0; // a pointer to keep track of which word we are up to

var displayNextWord = function()
{
    var word = words[pointer++]; // get the current word, then increment the pointer for next time
    if (word)
    { // if we haven't reached the end of the text yet...
        console.log(word); // print the word
        setTimeout(displayNextWord, 1000); // and try again in 1 second
    }
}

displayNextWord(); // knock down the first domino...

Working example: JSFiddle.

您发布的大多数示例代码都是您自己使用.split()已经实现的代码的实现,所以我在这里使用了它。

然后我们有pointer跟踪我们要处理的单词,并在displayNextWord()的每次运行中逐渐增加。 displayNextWord()只检查是否还有一个单词要显示:如果是,则打印该单词,然后设置超时,以便在1秒后再次运行。