如果失败但使用不同的参数来获取默认数据,则调用相同的 http 请求

call the same http request if it fails but with different parameter to get default data

如果第一个失败但使用不同的参数以 return 一些默认数据,在 catch 中调用相同的 http 请求调用是否有意义?

var defaultData = false;

clientService.getClients(defaultData)
     .then(function (res) {

         //do something

      }).catch(function (err) {

          defaultData = true;

          clientService.getClients(defaultData)
                .then(function (res) {

                 //do something

                }).catch(function (err) {

                    console.log(err)

                });
      });

或者这是一个糟糕的方法?

确保 return 新承诺到 catch 处理程序。然后代码将正确链接并避免嵌套:

clientService.getClients({defaultData:false})
 .catch(function (err) {

    return clientService.getClients({defaultData: true})

}).then(function (res) {

    //return something

}).catch(function (err) {

    console.log(err)
    //IMPORTANT re-throw err
    throw err;

});

这个问题还不错,但我认为你必须找到失败的原因并在家具上采取一些措施。 最好的是你必须创建一个错误处理程序,如:

errorHandler(error:any){
  ///.....
}

在这个方法中你应该检查响应的状态码,比如如果是500,你就不能再调用了。或者类似这样的东西。