自动在其他网址上重试请求

时间:2017-09-08 09:57:49

标签: javascript request

假设我有一个依赖于服务的应用程序,其中有许多实例。我自动想要在下一个服务的实例上重试请求。

这是一个示例请求:

var url = 'http://myservice1.com:3001'
function getItems() {
  return new Promise((resolve, reject) => {
    request(url+'/api/items',(body,error) => {
      if(error) reject(error)
      else resolve(body)
    })
   })
}

1 个答案:

答案 0 :(得分:0)

你可以使用Promise函数的包装器,它使用多个url执行Promise函数。 async-wrap实现了这一点。 您可以像这样使用它:

function getItems(){
    var urls = getServiceUrls() // Returns array
    return coalesce(urls, requestItems)

    function requestItems(url) {
        return new Promise((resolve, reject) => {
            request(url+'/api/items', (body,error) => {
              if(error) reject(error)
              else resolve(body)
            })
        })
    }
}
  

免责声明:我开发了这个包,因为我遇到了这个问题,并寻找一个简洁的解决方案。我打开任何其他建议来解决这个问题。