使用带有异步功能和setTimeout的while循环。 Nodejs的

时间:2018-12-07 18:11:16

标签: node.js async-await

我正在尝试创建一个测试,以验证我已经put在dynamoDB表中有一个项目。为了做到这一点,在我打了一个应该put数据库中的物品(车辆)的呼叫之后,我正试图从数据库中get车辆。

在我的测试中,我希望重试次数最多(5)。我希望这个while循环可以阻塞线程,直到我的查询解决了问题,或者尝试了5次。在我的测试中,我有:

    let count = 0
    let car
    while (!car || count < 5) {
        setTimeout(async () => {
            car = await findVehicle(greenCar.vehicleInfo)
        }, 3000)
        count++
    }

findVehicle是一个异步函数,它从dynamoDB表执行get

1 个答案:

答案 0 :(得分:1)

如果要等待每次迭代,您可以这样做:

let count = 0;
let car;

while (!car || count < 5) {

    await new Promise((resolve) =>
        setTimeout(async () => {
            car = await findVehicle(greenCar.vehicleInfo);
            resolve();
        }, 3000));

    count++
}

因此,您正在解决获得数据后正在等待的承诺。同样,您的函数必须异步才能使用await。希望这会有所帮助。