AngularJS承诺 – 模拟http承诺

当我知道请求在服务器端失败时,我想知道如何模拟promise $http.这是我的代码
if ( !ng.isString(email) ) {
    var promise = $q.defer().promise;
    $q.reject();

    return promise;
}

return $http( {
         method : "PUT",url : "//localhost/update",data : { data: email } 
})

// Success handler
.success(response){ return response})

// Error handler
.error(errorMsg){ return errorMsg});
您可以使用resolve和reject来控制数据流:

假设你有这样的服务:

var app = angular.module("mymodule.services",[]);

app.factory("HttpRequest",['$q','$http',function(q,http) {
  var deferredData = q.defer();

  http.get('http://your-server.local/data.json').success(function(data) {
    //success,resolve your promise here
    deferredData.resolve(data);
  }).error(function(err) {
    //error,use reject here
    deferredData.reject(err);
  });

  return {
    get: function() {
      return deferredData.promise;
    }
  };
}]);

然后可以使用该服务:

var app = angular.module("mymodule.controllers",['mymodule.services']);

app.controller("MyCtrl",['HttpRequest','$scope',function(res,scope) {
  //the "then"-method of promises takes two functions as arguments,a success and an erro callback
  res.get().then(function(data) {
    //first one is the success callback
    scope.data = data;
  },function(err) {
    scope.err = err; 
  }); 
}]);

您可以在第二个回调中处理错误.

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...