recursion地调用Promise

我有一个方法,使后通话和成功,它解决了一个承诺,但如果后调用失败,出于某种原因,我想实现recursion逻辑来调用解决承诺的方法。 我怎样才能实现这个有效的处理承诺。 以下是我正在尝试的代码。 现在,当服务调用失败时,它正在重试,但我得到未处理的拒绝错误,它是在它自己再次重试,然后拒绝。

dummyService.getAction = (requestData) => { var options = { url: config.url, json: true, body: requestData, method: 'post', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'x-request-id': 'IntegrationTesting' } } return new Promise(function (resolve, reject) { request(options, function (error, response, body) { const success = new RegExp('^2\\d{2}$'); const failure = new RegExp('^4\\d{2}$'); if (error) { reject(response); } else if (failure.test(response.statusCode) || recursive > 5) { reject(response); } else if (success.test(response.statusCode) && body) { resolve(body); } else { recursive++; setTimeout(function () { dummyService.getAction(requestData) }, 500); } }) }) } 

问题是在重试时由dummyService.getAction返回的dummyService.getAction基本上被忽略了。 尝试这个:

 setTimeout(function () { dummyService.getAction(requestData).then(resolve, reject); }, 500);