5

我发现最近的分块响应。我同意大多数时候我们希望做出全面的回应。但是,如果我想处理分块响应怎么办。

我将如何使用 $http 服务来做到这一点?

4

2 回答 2

4

您可以使用包装 XMLHttpRequest 的 angularjs 承诺 $q 定义一个函数。

var chunkedRequestWithPromise = function () {
  var deferred = $q.defer();
  var xhr = new XMLHttpRequest()
  xhr.open("GET", 'https://yoururl.com/chunked', true)
  xhr.onprogress = function () {
    deferred.notify(xhr.responseText);
  }
  xhr.onreadystatechange = function (oEvent) {
    if (xhr.readyState === 4) {
        if (xhr.status === 200) {
            deferred.resolve('success');
        } else {
            deferred.reject(xhr.statusText);
        }
    }
  };
  xhr.send();
  return deferred.promise;
};

并使用它:

chunkedRequestWithPromise().then(successFn,errorFn,notifyFn);
于 2017-05-08T15:17:29.393 回答
1

我找到了一种对我来说看起来正确的方法 http://www.igvita.com/2011/08/26/server-sent-event-notifications-with-html5/

当然还有 websocket api,但它对我的使用来说很重

另一种可能性是编写另一个 http 服务来控制 http 响应

于 2012-11-02T12:53:33.800 回答