【发布时间】:2018-09-19 00:23:54
【问题描述】:
我是 nodejs 和 ES6 的新手,并试图理解 Promise。如果结果不可接受,我需要在特定时间间隔(在本例中为 5 秒)重试 dynamodb 查询函数!所以我有这样的功能:
const retryFunc = (ddbParams, numberOfRetry) => {
return new Promise((resolve, reject) => {
return DDBUtils.query(ddbParams).then(result => {
//need to return a specific number of rows from the ddb table
if(numberOfRetry > 0){
if(result.length !== 100){
numberOfRetry = numberOfRetry - 1
setTimeout(() => {
retryFunc(ddbParams, numberOfRetry)
}, 5000)
}
}
resolve(result)
}).catch(error => {
reject(error)
})
})
}
当 dynamodb 查询在第一次调用中返回可接受的结果(100 条记录)时,该函数工作正常并将结果返回给调用者。但是,如果函数需要重试以满足 100 条件,那么它不会在满足时将结果返回给调用者!任何人都可以帮助我了解正在发生的事情吗?
【问题讨论】:
-
有多个这样的问题在堆栈溢出时已经有了答案。请使用搜索并尝试查找以前的一些。
标签: node.js promise settimeout