JavaScript循环动画间隔

时间:2016-06-25 10:42:25

标签: javascript arrays animation

我试图让这个循环为每1秒的数组中的每个值返回一个值。

返回的值是先前生成的随机值,每个循环都会将i添加到数字并输出。 (跑[0] + i)(跑[1] + i)等。

我需要输出的顺序与我的例子相同,但是间隔为1秒,并且需要生成我的返回/控制台日志,而不是必须输入所有4,或者我使用的是多少(可以是随机的)。< / p>

代码用于动画,但我不能让SVG在这里工作,而且与我认为的问题无关。

10
20
10 + 20 = 30
0
0
0 + 0 = 0

1 个答案:

答案 0 :(得分:2)

你可以这样做;

var ran = [];
var qan = 4;
for(let i=0;i<(qan);i++){
  rd = Math.floor(Math.random()*360);
  ran.push(rd);
  setTimeout(function(){console.log(ran[i])},1000*i);
}

或者使用var代替let,你仍然可以通过利用IIFE返回一个封装了i值的回调来做到这一点。

var ran = [];
var qan = 4;
for(var i=0;i<(qan);i++){
  rd = Math.floor(Math.random()*360);
  ran.push(rd);
  setTimeout((function(j){ return function(){ console.log(ran[j]) } })(i),1000*i);
}

更新:我希望我越来越近了..我只是在数据库本身的console.log中,但每一轮中的项目增加i。 (10轮/帧)

var randar = new Array(4).fill().map(e => ~~(Math.random()*360));
console.log("starting random array ",randar); // let's see how the random array starts
for (let i = 0; i < 10; i++){
	setTimeout(function(){console.log(randar.map(e=> e+i))} ,1000*i);
}

注意:我主要使用箭头,但如果您对IE或Safari有疑虑,那么最好用传统的函数调用替换它们。