代码之家  ›  专栏  ›  技术社区  ›  Nick Res

拦截$http响应并传回新的全新响应

  •  1
  • Nick Res  · 技术社区  · 7 年前

    以下是它的设置方式:

    //控制器

    PaymentService.submit(payment_info).then(function(resp){
      // Do stuff on success
    })
    

    payment.submit = function(data) {
      var strategy;
    
      // general payment codez
    
      if (CURRENT_COUNTRY == 'au') {
        strategy = PaymentStrategy.nab.submit(card.number, card.cvv, card.exp_year, card.exp_month);
      }
    
      return strategy;
    }
    

    //支付策略。nab#提交

    service.submit = function(number, cvv, exp_year, exp_month) {
    
      // payment codez specific to NAB
    
      return $http.post(resource_path, $httpParamSerializerJQLike(payload), { headers: headers })
    }
    

    我想要付费服务。提交方法为任何支付网关工作-所以我需要传递回的承诺始终表现相同。这种独特的配置只应该出现在它们自己的策略中。

    话虽如此,我怎样才能从NAB那里得到一个响应,使该响应正常化,然后在整个链中返回另一个正确的响应?

    1 回复  |  直到 7 年前
        1
  •  1
  •   georgeawg    7 年前

    要将成功的承诺转换为被拒绝的承诺, 成功处理程序中的值。要将被拒绝的承诺转换为成功的承诺, 对于 .catch 处理程序。

    return $http.get(url).then(function(response) {
        if (response.data.transactionFailed) {
            //THROW to convert to rejection;
            throw response;
        };
        //OTHERWISE return to chain response
        return response;
    });
    

    这个 .then 承诺方法返回 承诺,解决什么是返回(或拒绝与抛出)。

    有关更多信息