【发布时间】:2019-09-16 22:25:47
【问题描述】:
目标是定期将采样数据作为对象推送到数组中,并等待新数组完成后将其记录到控制台。
我是 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()-ing 数组,因为它是在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();
【问题讨论】:
标签: javascript arrays asynchronous timestamp