在客户端返回 Angular 承诺,无需服务器往返

问题描述 投票:0回答:2

我在我的项目中使用 Angular xeditable。

我正在为我的网格使用 Angular xeditable row 组件。

据我所知,如果我使用

 return  $http.post('api/students',model).sucess(function(data) {

 })
.error(function(data) {
 }) ;

据我所知,会发生什么 - 上面的代码将调用学生 CONTROLLER post 方法 Web api。如果返回OK,则执行成功并返回,否则执行并返回错误。

但我的问题是 - 我可以从 JavaScript 本身调用

.error
调用吗?

比方说:

 if( textbox == "") 

       return $http.post().error().......
  
  else

        return $http.post().sucess()....

为什么我想要这样的东西?

因为对于单个文本框,我必须进行服务器检查以检查它是否为空。如果它不为空,我返回 OK(),否则我返回(比方说)NotFound()。

OK 将执行成功调用,NotFound 将执行错误调用。

所以在 JS 端,如果我检查字符串是否为空。如果强制清空(没有服务器故障)我想“返回”.error 回调。可以吗?

$http.post 会使服务器运行,我知道这一点。但是如果我想强制返回错误承诺,在客户端怎么办?

angularjs angularjs-http
2个回答
0
投票

您可以使用

$q
库来拒绝承诺。

返回错误承诺:

angular.module(....)
  .service('myService', ['$q', '$http', ....,
     function($q, $http, ....) {
        ...
        this.myFunction = function(data) {

          if (isValid(data)) {
            return $http.post(....);
          } else {
            return $q.reject("rejection message");
          }

        };
        ...
     }]);

0
投票

如果您不想在没有有效输入的情况下发出 HTTP 请求,只需在执行任何操作之前检查输入即可。像这样:

if(<valid input>) {
  return  $http.post('api/students',model)
  .success(function(data) {

  })
  .error(function(data) {

  }) ;
} else {
  // don't do request
}
© www.soinside.com 2019 - 2024. All rights reserved.