首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在循环中按顺序执行异步方法?

如何在循环中按顺序执行异步方法?
EN

Stack Overflow用户
提问于 2019-07-10 21:01:38
回答 3查看 286关注 0票数 1

我想从db获得几次数据。如何设置一个循环以在200 to这样的间隔内执行getData()函数。如果其中一个成功了,剩下的就不会被触发。它是异步方法,与这里的问题不同:Asynchronous Process inside a javascript for loop

代码语言:javascript
复制
for(var i = 0; i < 3; i++){
setTimeout(getData,200);}

这将导致输出时间间隔非常接近,而不是200 is,因为它们是异步的。三个"setTimeout“是在短时间内触发的。与0.001s0.002s0.003s一样,输出时间为0.201、0.202、2.203。

getData()返回一个承诺。但只要它起作用,它就可以是正常的功能。

EN

Stack Overflow用户

发布于 2019-07-10 21:09:36

您可以在执行下一个setTimeout之前等待setTimeout完成。

我认为这在回调中是不可能的,就像setTimeout的情况一样,所以您应该将其转换为基于承诺的调用。

代码语言:javascript
复制
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();

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56978584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档