我想将 setTimeout() 输出保存为变量。
例如:
function time() {
return (new Date).getTime();
}
for (var x=0; x<10; x++) {
setTimeout( time() , 2000);
}
上面的 javascript 代码每 2 秒以毫秒为单位返回时间,最多 10 次。
所以我们将得到 10 个输出。我想将这些输出保存为 10 个变量。所以我将能够计算平均值等。
请任何帮助将不胜感激。
我想将 setTimeout() 输出保存为变量。
例如:
function time() {
return (new Date).getTime();
}
for (var x=0; x<10; x++) {
setTimeout( time() , 2000);
}
上面的 javascript 代码每 2 秒以毫秒为单位返回时间,最多 10 次。
所以我们将得到 10 个输出。我想将这些输出保存为 10 个变量。所以我将能够计算平均值等。
请任何帮助将不胜感激。
上面的 javascript 代码每 2 秒以毫秒为单位返回时间,最多 10 次。
不,它没有。它time 立即调用并将其返回值传递给setTimeout(它不会对它做任何事情),因为你有()after time。如果您有setTimeout(time, 2000),它将安排 10 次调用time,但所有调用都会在大约 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);
一个替代循环可能是
编辑:根据您的评论之一,此脚本现在也输出平均值
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