【发布时间】:2016-12-02 18:40:20
【问题描述】:
我想向我的 javascript HTTP 服务添加重试逻辑,该服务在内部使用 Axios 并返回 Promise。目标是重试获取/发布,直到它解决或超过重试限制。我想出了这个草稿(没有按原样工作)
fetchSomething(numRetry) {
if (!numRetry)
numRetry = 0
return new Promise(function(resolve, reject) {
axios.get('/services/rest/vopa/sanomaloki/virheet')
.then(response => resolve(response))
.catch(response => {
if (numRetry > FETCH_RETRY_LIMIT)
reject(response)
else
return fetchSomething(numRetry + 1)
})
});
}
据我所知,在 catch 中调用 fetchSomething 会创建新的解析和拒绝函数,但我希望它解析或拒绝原来的承诺
【问题讨论】:
-
返回 fetchSomething(numRetry ++)
-
认为最好在更高的抽象级别上调用您的函数内部“拒绝”回调
标签: javascript ajax asynchronous promise crud