我想将setTimeout()输出保存为变量。
例如:
function time() {
return (new Date).getTime();
}
for (var x=0; x<10; x++) {
setTimeout( time() , 2000);
}
以上javascript代码每2秒返回时间(以毫秒为单位),最多10次。
所以我们将得到10个输出。我想将这些输出保存为10个变量。所以我将能够计算平均值等。
请提供任何帮助。
答案 0 :(得分:9)
以上javascript代码每2秒返回时间(以毫秒为单位),最多10次。
不,它没有。它立即调用time
并将其返回值传递给setTimeout
(它不会对其执行任何操作),因为()
之后time
}}。如果您有setTimeout(time, 2000)
,它会安排10次拨打time
,但所有会在大约2秒后发生(不是每次 2秒)。
所以我们将得到10个输出。我想将这些输出保存为10个变量
这就是数组的用途。 : - )
var times = [];
function time() {
times.push((new Date).getTime());
if (times.length < 10) {
setTimeout(time, 2000);
}
}
setTimeout(time, 2000);
或者,如果由于某种原因您无法直接修改time
:
var times = [];
function time() {
return (new Date).getTime();
}
function nextTime() {
times.push(time());
if (times.length < 10) {
setTimeout(nextTime, 2000);
}
}
setTimeout(nextTime, 2000);
答案 1 :(得分:1)
另一个循环可能是
编辑:根据您的一条评论,此脚本现在也输出平均值
var times = [];
var calculateAverage = function() {
var sum = times.reduce(function(sum, t) { return sum += t; }, 0);
console.log("Average:", sum/times.length);
};
var timer = setInterval(function() {
times.push((new Date).getTime());
if (times.length === 10) {
clearTimeout(timer);
calculateAverage();
}
}, 2000);
输出
平均值:1376671898024