Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript setTimeout()输出另存为变量_Javascript - Fatal编程技术网

javascript setTimeout()输出另存为变量

javascript setTimeout()输出另存为变量,javascript,Javascript,我想将setTimeout输出保存为变量 例如: function time() { return (new Date).getTime(); } for (var x=0; x<10; x++) { setTimeout( time() , 2000); } 上面的javascript代码每2秒返回时间(毫秒),最多返回10次 我们将得到10个输出。我想将这些输出保存为10个变量。所以我可以计算平均值等 如果您有任何帮助,我们将不胜感激 上面的javascript代码每2

我想将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,setTimeout不会对它做任何事情,因为您有after time。如果您有setTimeouttime,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);

另一个循环可能是

编辑:根据您的一条评论,此脚本现在也输出平均值

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


将数组与一起使用。您的代码不会执行您描述的操作。但要回答您的问题,请使用单个数组而不是10个变量。谢谢。我在JSFIDLE上测试了您的代码。它不起作用。如果您还发布了如何计算平均时间以确认工作代码,那就太好了。@Vaibhav:对我来说很好:我使用了3而不是10,因为我不想等待20秒。
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);