数据以特定时间间隔传递

时间:2017-08-03 13:31:11

标签: javascript loops meteor foreach settimeout

我需要的答案是提出一个特定的间隔。代码是

const myMap = new Map([
  [ "A", 1 ],
  [ "B", 2 ],
  [ "c", 3 ],
  [ "d", 4 ],
  [ "e", 5 ],
  [ "f", 6 ],
  [ "g", 7 ]
]);


myMap.forEach( (val, key) => 
     Meteor.setTimeout(test(),9000)
);

function test(){
   console.log("jajjjaja");
   console.log(Date());
}

结果为Output

我的时间间隔是9秒,但结果是所有相同的秒?如何在每9秒中获得每个结果

1 个答案:

答案 0 :(得分:2)

setTimeout函数全部一起被调用,因为每个setTimeout同时被赋予进程队列,在9s传递后它们被事件循环逐个挑选,但由于它们全部同时完成它们给出了相同的日期()作为输出,如果你想要你可以保持一个计数器和setTimeout为9 *计数器秒,这将解决你的问题这里是一个运行的例子

const myMap = new Map([
  [ "A", 1 ],
  [ "B", 2 ],
  [ "c", 3 ],
  [ "d", 4 ],
  [ "e", 5 ],
  [ "f", 6 ],
  [ "g", 7 ]
]);


myMap.forEach(function(key, value){
    test(key);
});

function test(key){
    setTimeout(function(){
        console.log("jajjjaja");
        console.log(Date());
    },9000*key);
}