加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS承诺 – 模拟http承诺

发布时间:2020-12-17 08:46:53 所属栏目:安全 来源:网络整理
导读:当我知道请求在服务器端失败时,我想知道如何模拟promise $http.这是我的代码: if ( !ng.isString(email) ) { var promise = $q.defer().promise; $q.reject(); return promise;}return $http( { method : "PUT",url : "//localhost/update",data : { data:
当我知道请求在服务器端失败时,我想知道如何模拟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; 
  }); 
}]);

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读