javascript setTimeout()输出另存为变量

时间:2013-08-16 16:36:47

标签: javascript

我想将setTimeout()输出保存为变量。

例如:

function time() {
 return  (new Date).getTime();
 }

for (var x=0; x<10; x++) {
   setTimeout( time() , 2000);
}

以上javascript代码每2秒返回时间(以毫秒为单位),最多10次。

所以我们将得到10个输出。我想将这些输出保存为10个变量。所以我将能够计算平均值等。

请提供任何帮助。

2 个答案:

答案 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

相关问题