在Javascript中为采样数据创建时间戳对象数组?

在Javascript中为采样数据创建时间戳对象数组?,javascript,arrays,asynchronous,timestamp,Javascript,Arrays,Asynchronous,Timestamp,目标是以周期性的间隔将采样数据作为对象推送到阵列上,并等待新阵列完成后将其注销到控制台 我是JS新手,所以请放轻松;)。我可能会让事情变得比实际需要的更复杂。我想这就像for循环中的setTimeout()一样简单 我已经能够以两种不同的方式生成数组,使用iLife和下面的setTimeout()以及setInterval()。不确定如何使async Wait函数使用数组push()方法查询长度。也许这不是一个好方法 类样本{ 构造函数(标记、时间戳){ this.tag=tag; this.

目标是以周期性的间隔将采样数据作为对象推送到阵列上,并等待新阵列完成后将其注销到控制台

我是JS新手,所以请放轻松;)。我可能会让事情变得比实际需要的更复杂。我想这就像for循环中的
setTimeout()
一样简单

我已经能够以两种不同的方式生成数组,使用iLife和下面的
setTimeout()
以及
setInterval()
。不确定如何使async Wait函数使用数组
push()
方法查询长度。也许这不是一个好方法


类样本{
构造函数(标记、时间戳){
this.tag=tag;
this.timeStamp=Date.now();
}
}
函数阵列生成器(标签){
返回样品推送(新样品(标签));
};
函数setIntSample(回调、延迟、迭代){
var i=0;
var intervalID=setInterval(函数(){
收回(i);
如果(++i==迭代次数){
clearInterval(intervalID);
}
},延误);
};
arrayGenerator()
函数中生成数组时,上面的命令似乎可以运行
console.log()
。下面没有骰子

函数resolveAfterArrGeneration(){
返回新承诺(解决=>{
arrLength=setIntSample(i=>{arrayGenerator(i)},3000,5)
如果(arrLength==5){resolve();}
});
}
异步函数ans(){
var answer=等待resolveAfterArrGeneration();
控制台日志(sampleArr);
}
ans();

基本思想是在
setInterval
运行了足够多的迭代后返回承诺并解决承诺。您可以在一个单独的函数中使用类似的东西(使用额外的
console.logs
来显示流程):

类示例{
构造函数(标记、时间戳){
this.tag=tag;
this.timeStamp=Date.now();
}
}
函数makeSamples(迭代、延迟){
设样本=[],i=0;
返回新承诺(解决=>{
让intervalID=setInterval(函数(){
console.log(“推送新样本”)
推送(新样本('tag:'+i));
如果(++i==迭代次数){
console.log(“已完成解析”)
clearInterval(intervalID);
解析(样本)
}
},延误);
})
}

然后(console.log)
我将隔离延迟部分(异步)部分,并为此创建一个单独的通用函数
delay()。然后,使用
async
函数和
for
循环,剩下的一切都变得简单了:

constdelay=(ms)=>newpromise(resolve=>setTimeout(resolve,ms));
类样本{
构造函数(标记、时间戳){
this.tag=tag;
this.timeStamp=Date.now();
}
}
异步函数setIntSample(回调、ms、迭代){
常数arr=[];
for(设i=0;i新样本(标记)
console.log(“等待它…”);

setIntSample(newSample,1000,5)。然后(console.log)另一种方法,我刚刚开始使用生成器函数

function* simpleGenerator(){
    var index = 0;
    while (true)
        yield {tag: index++, time: Date.now()} 
}
var gen = simpleGenerator();
…用相应的推力

        arr.push(gen.next().value);

非常感谢。看起来这将使以不同采样频率并行运行多个进程变得简单。