Javascript 承诺总是成功的| AngularJS

Javascript 承诺总是成功的| AngularJS,javascript,angularjs,Javascript,Angularjs,我有一个正在处理身份验证服务的服务。我有另一个服务处理对客户端响应服务的响应。然后我有一个控制器,它利用这些服务注册控制器 我正在用一封我知道已经存在的电子邮件注册,希望看到toastr错误声明。当我单击submit按钮时,它会触发AuthService.signup。当它从我的api收到409时,它会正确地遵循正确的错误响应,并在我的屏幕上显示错误。但是,正如SignupControlr.js中的onSuccess函数所述,页面被重定向到仪表板。为什么呢 注册控制器: AuthService.

我有一个正在处理身份验证服务的服务。我有另一个服务处理对客户端响应服务的响应。然后我有一个控制器,它利用这些服务注册控制器

我正在用一封我知道已经存在的电子邮件注册,希望看到toastr错误声明。当我单击submit按钮时,它会触发AuthService.signup。当它从我的api收到409时,它会正确地遵循正确的错误响应,并在我的屏幕上显示错误。但是,正如SignupControlr.js中的onSuccess函数所述,页面被重定向到仪表板。为什么呢

注册控制器:

AuthService.signup:

ResponseService.error:

正因为如此:

在承诺链接中,如果不返回任何内容,则实际上是为未定义的值返回已解析的承诺

我必须编辑我的AuthService:

.catch(function onError(res) {
  return ResponseService.error(res);
});
另外-我需要在AuthService中的所有.catch{}中返回$q.reject

signup: function (email, password, name, company, reCaptcha) {
  return $http.put('/api/user/signupWithEmail', {
      email: email,
      password: password,
      company: company,
      name: name,
      reCaptcha: reCaptcha
    })
    .then(function onSuccess (res){
      $localStorage.userHash = res.data.user;
      $auth.setToken(res.data.token);
      console.log('Pass');
    })
    .catch(function onError(res) {
      ResponseService.error(res);
      console.log('Fail');
    });
}
  return {
    error: function (res) {
      if (res.status === 500) {
        return toastr.error('An unexpected error occurred, please try again later.', 'Error', {
          closeButton: true
        });
      } else if (res.status === 404) {
          return toastr.error('Invalid email/password combination.', 'Error', {
            closeButton: true
          });
      } else if (res.status === 401) {
        return toastr.error('You are not allowed access to this resource.', 'Error', {
          closeButton: true
        });
      } else if (res.status === 409) {
        return toastr.error('That email address is already taken. Please try again.', 'Error', {
            closeButton: true
        });
      }
    }
  };
.catch(function onError(res) {
  return ResponseService.error(res);
});