如何在AngularJS上获取$ http readyState?

阿布拉图拉

我如何获得$ http readyState,像这样使用:

var request, interval;

request = $http
  .post('/user/info', {...})
  .success(...);

interval = setInterval(function(){
  if(request.readyState < 3)
    return;

  prepare(request.data, request.headers);
  clearInterval(interval)
}, 10);

function prepare(data, headers){
  ...
}

我不知道如何在不更改angular.js文件的情况下执行此操作。是否可以通过$ httpBackend或其他方式向服务中添加一些功能?

乔治

使用AngularJS 1.5.5,添加了对XHR事件的其他处理的支持

$ http参数-配置

描述要发出的请求及其处理方式的对象。该对象具有以下属性:

  • 事件处理器- {Object}-事件监听器绑定到XMLHttpRequest对象要将事件绑定到上XMLHttpRequest载对象,请使用uploadEventHandlers该处理程序将在一个$apply的上下文中被调用
  • uploadEventHandlers - {Object}-事件侦听器绑定到了XMLHttpRequest上传对象要将事件绑定到XMLHttpRequest对象,请使用eventHandlers。该处理程序将在一个$apply的上下文中被调用

— AngularJS $ http服务API参考-Http参数

使用eventHandlersconfig对象属性添加一个获取XHR 的事件处理程序readyState

演示

angular.module("app",[])
.run(function($rootScope, $http){
  var eventHandlers = {readystatechange: readyStateChangeHandler};
  var config = { eventHandlers: eventHandlers }; 
  $rootScope.messageList = [];
  
  function readyStateChangeHandler(ev) {
    var message = "readyState: "+ev.target.readyState;
    console.log(message);
    $rootScope.messageList.push(message);
  }
  
  $http.get("//httpbin.org/anything",config)
    .then(function(response){
      console.log("OK");
      //console.log(response);
  }).catch(function(response){
      console.log("ERROR");
      //console.log(response); 
  })
})
<script src="//unpkg.com/angular/angular.js"></script>
<body ng-app="app">
    <div ng-repeat="m in messageList">
      {{m}}  
    </div>
  </body>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

readyState与status == 200

XMLHttpRequest中不同的readystate是什么意思,我该如何使用它们?

如何在http.ResponseWriter上设置HTTP状态代码

如何在HTTP请求中获取数组

如何在HAProxy上启用HTTP / 2?

如何在AngularJS中取消$ http请求?

使用SSE检测readyState的变化

如何在angularjs中限制$ http请求?

Javascript FileReader挂在readyState 1上(使用react-dropzone)

AngularJS:如何在通过$ http获取数据时禁用默认观察程序

为什么我在DOM上获取{“ readyState”:1}而不是AngularJS中的JSON数据?

如何在Flutter中上传http.MultipartRequest请求上的文件时获取进度事件

如何使用JavaScript'readyState'为元素设置延迟?

IE中的XMLHTTPRequest ReadyState问题

Windows 8(8.1)中的jQuery Ajax readystate 0 status 0仅在Chrome上

如何在angularjs中覆盖$ http对象

如何在Firefox / Internet Explorer上获取原始HTTP响应页面而不是用户友好消息?

如何在AngularJS的许多控制器上仅使用一个$ http请求

在AngularJS上获取$ http响应错误状态

如何在Beanshell Jmeter上获取响应消息HTTP请求

AJAX获取请求JSONP分析器错误:readyState“:4,” status“:200,” statusText“:” load“}]

如何在ajax上从http://aaa-my.sharepoint.com获取数据到http://aaa.sharepoint.com

PhpStorm:未解析的变量 readyState

如何在反应中获取 http 参数?

Swift - 如何在 iPhone 上通过 HTTP 获取文件的最后修改日期

如何修复 Ajax GET 请求的“{"readyState":0,"status":0,"statusText":"error"}'

AJAX 返回 readystate=1

如何在同一按钮上使用 AbortController 中止获取 HTTP 请求

XMLHttpRequest.readyState 是否有 node.js http 等效项?