在我的代码中,我有三个间隔,应该一个接一个地随机执行。
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
如何重写我的代码以使这些间隔按正确顺序排列,并且在第一次完成任务之前不允许其他人工作?
答案 0 :(得分:0)
您可以同时开始所有间隔。如果要连续运行它们,则必须在清除上一个时启动它们。 此代码应该可以满足您的需求:
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();
&#13;