我想从db获得几次数据。如何设置一个循环以在200 to这样的间隔内执行getData()函数。如果其中一个成功了,剩下的就不会被触发。它是异步方法,与这里的问题不同:Asynchronous Process inside a javascript for loop
for(var i = 0; i < 3; i++){
setTimeout(getData,200);}这将导致输出时间间隔非常接近,而不是200 is,因为它们是异步的。三个"setTimeout“是在短时间内触发的。与0.001s0.002s0.003s一样,输出时间为0.201、0.202、2.203。
getData()返回一个承诺。但只要它起作用,它就可以是正常的功能。
发布于 2019-07-10 21:09:36
您可以在执行下一个setTimeout之前等待setTimeout完成。
我认为这在回调中是不可能的,就像setTimeout的情况一样,所以您应该将其转换为基于承诺的调用。
const promiseSetTimeout = timeout => new Promise(r => setTimeout(r, timeout));
const waitManyTimes = async () => {
for(let i = 0; i < 3; i++) {
await promiseSetTimeout(200);
// do something here, like getDB
console.log(i);
}
}
waitManyTimes();
https://stackoverflow.com/questions/56978584
复制相似问题