gpt4 book ai didi

javascript - 在 Javascript 中创建用于采样数据的时间戳对象数组?

转载 作者:行者123 更新时间:2023-12-02 23:45:21 25 4
gpt4 key购买 nike

目标是定期将采样数据作为对象推送到数组上,并等待新数组完成后将其记录到控制台。

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

我已经能够通过两种不同的方式生成数组,使用带有 setTimeout() 的 IIFE 以及下面的 setInterval()。不确定如何让异步等待函数与查询长度的数组 push() 方法一起使用。也许这不是一个好方法?


class Sample {
constructor(tag, timeStamp) {
this.tag = tag;
this.timeStamp = Date.now();
}
}

function arrayGenerator(tag){
return sampleArr.push(new Sample(tag));
};

function setIntSample(callback, delay, iterations) {
var i = 0;
var intervalID = setInterval(function () {
callback(i);
if (++i === iterations) {
clearInterval(intervalID);
}
}, delay);
};

上面似乎可以使用 console.log() 来处理在 arrayGenerator() 函数中生成的数组。下面,没有骰子

function resolveAfterArrGeneration(){
return new Promise(resolve => {
arrLength = setIntSample(i => {arrayGenerator(i)}, 3000, 5)
if (arrLength === 5) {resolve();}
});
}

async function ans() {
var answer = await resolveAfterArrGeneration();
console.log(sampleArr);
}
ans();

最佳答案

基本思想是当 setInterval 运行足够的迭代时返回一个 Promise 并解析该 Promise。您可以在单个函数中使用类似的方法来完成此操作(使用额外的 console.logs 来显示过程):

class Sample {
constructor(tag, timeStamp) {
this.tag = tag;
this.timeStamp = Date.now();
}
}

function makeSamples(iterations, delay){
let samples = [], i = 0;
return new Promise(resolve => {
let intervalID = setInterval(function () {
console.log("pushing new sample")
samples.push(new Sample('tag: ' + i));
if (++i === iterations) {
console.log("finished resolving")
clearInterval(intervalID);
resolve(samples)
}
}, delay);
})
}

makeSamples(5, 1000).then(console.log)

关于javascript - 在 Javascript 中创建用于采样数据的时间戳对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55883988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com