2017-05-21 14 views
0

私はランダムな時間を次々に実行されなければならない3つの間隔を持っています。Javascriptを - 正しい順序でいくつかの間隔が私のコードで

var times = Math.floor((Math.random() * 3) + 2); 
    var turn = 0; 
    var schemaInterval1 = setInterval(function(){ 
     console.log('first'); 
     turn++; 
     if(turn == times) 
     { 
      times = Math.floor((Math.random() * 3) + 2); 
      turn = 0; 
      clearInterval(schemaInterval1); 
     } 
    },1000); 
    var schemaInterval2 = setInterval(function(){ 
     console.log('second'); 
     turn++; 
     if(turn == times) 
     { 
      times = Math.floor((Math.random() * 3) + 2); 
      turn = 0; 
      clearInterval(schemaInterval2); 
     } 
    },1000); 
     var schemaInterval3 = setInterval(function(){ 
     console.log('third'); 
     turn++; 
     if(turn == times) 
     { 
      times = Math.floor((Math.random() * 3) + 2); 
      turn = 0; 
      clearInterval(schemaInterval3); 
     } 
    },1000);  

インターバル内でコードを実行するたびに、ターン値に1を加算します。ターンとタイムの値が等しい場合は、両方をリセットします。現在作業中の間隔を離れ、別の間隔に飛びます。どのように私は適切な順序でそれらの間隔を置くために私のコードを書き換えることができ

first 
second 
third 
first 
second 
first 
(4)second 

と最初の仕上げは、それがなるまで他の人が働くことはできません。しかし、残念ながら、彼らは私がそのメッセージを取得し、正しい順序で、私のコンソールでは動作しません。仕事?

+1

は1時間間隔で全体のコードを入れてください: このコードは、あなたが探している何をすべき? – Siphalor

答えて

0

すべて同時にあなたの間隔を開始します。あなたがそれらを直列に実行したい場合は、あなたが以前のものをクリアしたときに1を開始する必要があります。

var times = Math.floor((Math.random() * 3) + 2); 
 
var turn = 0; 
 
var intervalNumber = 1; 
 
var intervalTime = 1000; 
 
var numberOfIntervals = 3; 
 
function instantiateInterval() { 
 
    if (intervalNumber <= numberOfIntervals) { 
 
    console.log('Timer number: ' + intervalNumber); 
 
    var interval = setInterval(function() { 
 
     turn++; 
 
     if(turn === times) { 
 
     times = Math.floor((Math.random() * 3) + 2); 
 
     turn = 0; 
 
     clearInterval(interval); 
 
     instantiateInterval(); 
 
     } 
 
    }, intervalTime); 
 
    intervalNumber++; 
 
    } 
 
} 
 
instantiateInterval();

関連する問題