首页 > 解决方案 > 如果失败,则调用相同的 http 请求,但使用不同的参数来获取默认数据

问题描述

如果第一个失败但使用不同的参数以返回一些默认数据,那么在 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)

                });
      });

或者这是一个坏方法?

标签: javascriptangularjsangular-promiseangularjs-service

解决方案


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

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;

});

推荐阅读