重复异步功能10次

时间:2018-06-05 10:07:15

标签: javascript

我尝试以5秒的间隔重复async次10次。这就是我所做的:

repeat(x) {
    (async function p(x, count) {
        if (cam) {
            await x.foo().then(data => {
                ...
            });
        }

        if (count < 10) {
            setTimeout(p(x, count+1), 5000);
        }
    })(cam, 0);
}

但我得到的是p()执行10次而不等待。有谁知道为什么?

任何想法都赞赏。

1 个答案:

答案 0 :(得分:3)

您正在使用setTimeout(p(x, count+1), 5000);立即调用该函数并传递其返回值,假设在{5}之后调用undefined

您需要传递函数引用和参数,以便在使用以下

调用方法时使用
setTimeout(p, 5000,x, count+1);