javascript setTimeout()输出另存为变量

javascript setTimeout() outputs save as variables

本文关键字:另存为 变量 输出 setTimeout javascript      更新时间:2023-09-26

我想将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(这对它没有任何作用),因为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);

输出

平均:13766718982024