Node.js 使用带有异步函数和setTimeout的while循环。Nodejs
我正在尝试创建一个测试,以验证我是否已Node.js 使用带有异步函数和setTimeout的while循环。Nodejs,node.js,async-await,Node.js,Async Await,我正在尝试创建一个测试,以验证我是否已将项放入dynamoDB表中。为了做到这一点,在我打了一个应该将项目(车辆)放入数据库的电话之后,我正试图从数据库中获取车辆 在我的测试中,我希望有最大的重试次数(5次)。我希望这个while循环阻塞线程,直到我的查询解决了提供一辆车,或者尝试了5次。在我的测试中,我有: let count = 0 let car while (!car || count < 5) { setTimeout(async () =
将项放入dynamoDB表中。为了做到这一点,在我打了一个应该将项目(车辆)放入数据库的电话之后,我正试图从数据库中获取车辆
在我的测试中,我希望有最大的重试次数(5次)。我希望这个while循环阻塞线程,直到我的查询解决了提供一辆车,或者尝试了5次。在我的测试中,我有:
let count = 0
let car
while (!car || count < 5) {
setTimeout(async () => {
car = await findVehicle(greenCar.vehicleInfo)
}, 3000)
count++
}
let count=0
出租汽车
而(!car | | count<5){
setTimeout(异步()=>{
car=等待查找车辆(绿色汽车.车辆信息)
}, 3000)
计数++
}
而findVehicle
是一个异步函数,它从dynamoDB表中执行获取
,如果您想等待每次迭代,可以执行以下操作:
let count = 0;
let car;
while (!car || count < 5) {
await new Promise((resolve) =>
setTimeout(async () => {
car = await findVehicle(greenCar.vehicleInfo);
resolve();
}, 3000));
count++
}
let count=0;
出租汽车;
而(!car | | count<5){
等待新的承诺((决心)=>
setTimeout(异步()=>{
car=等待查找车辆(绿色汽车.车辆信息);
解决();
}, 3000));
计数++
}
因此,您正在解决在获得数据后等待的承诺。此外,为了使用wait,您的函数必须是异步的。希望这有帮助。setTimeout
不会返回一个承诺,等待setTimeout
没有意义这是一个输入错误,你现在有什么问题?@AlexG这是一个无限循环井,你正在增加setTimeout中的计数。。你应该在它下面增加它。