使用Promise.all(),其中个人承诺在错误

时间:2016-10-18 00:42:14

标签: javascript node.js http request promise

我有一个promises(request-promises)数组,它们包含在另一个方法中,以便在捕获错误时重试3次。那部分工作正常。我想使用promise.all()因为我最终会有大量的http请求。到目前为止我使用的方法,promise.all()仍然在所有重试尝试完成之前调用它回调函数。有没有办法可以在promise.all()进行回调之前等待所有重试尝试完成。

var http_req = require('request-promise')

function My_Http(retries, options)
{
    return http_req(options)
            .then(data=>{console.log('success')})
            .catch(err => {
                retries > 0 ? My_Http(retries-1, options) :  console.log(err.message)
             })
}

var promises = []
promises.push( My_Http(3, options1))
promises.push( My_Http(3, options2))

promise.all(promises).then( data=> {console.log(data)} )

1 个答案:

答案 0 :(得分:1)

好吧,我认为这是一个愚蠢的错误,但可能对其他人有好处,我在My_Http中删除了当时的内容并返回整个三元语句。

var http_req = require('request-promise')

function My_Http(retries, options)
{
    return http_req(options)
            .catch(err => {
                return retries > 0 ? My_Http(retries-1, options) :  console.log(err.message)
             })
}

var promises = []
promises.push( My_Http(3, options1))
promises.push( My_Http(3, options2))

promise.all(promises).then( data=> {console.log(data)} )