我希望我的函数执行 X(=3) 次直到成功。
在我的情况下我正在跑步kinesis.putRecord
(来自 AWS API),如果失败 - 我想再次运行它,直到成功,但尝试次数不超过 3 次。
我是 NodeJS 新手,我写的代码很难闻。
const putRecordsPromise = function(params){
return new Promise((resolve, reject) => {
kinesis.putRecord(params, function (err, data) {
resolve(err)
});
})
}
async function waterfall(params){
try{
let triesCounter = 0;
while(triesCounter < 2){
console.log(`try #${triesCounter}`)
let recordsAnswer = await putRecordsPromise(params)
if(!recordsAnswer){
console.log("success")
break;
}
triesCounter += 1;
}
// continue ...
} catch(err){
console.error(err)
}
}
waterfall(params)
我保证错误的结果。之后,如果 err 为空,则一切顺利。否则,继续运行相同的命令。
我确信有一种更聪明的方法可以做到这一点。任何帮助,将不胜感激。
我认为,所有 Aws 函数都可以立即返回 Promise,然后您可以将调用放入try/catch
:
let triesCounter = 0;
while(triesCounter < 2){
console.log(`try #${triesCounter}`)
try {
await kinesis.putRecord(params).promise();
break; // 'return' would work here as well
} catch (err) {
console.log(err);
}
triesCounter ++;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)