使用angularjs$http处理分块响应

使用angularjs$http处理分块响应,http,angularjs,chunked,Http,Angularjs,Chunked,我发现最近的反应有点支离破碎。 我同意,大多数情况下,我们都希望做出全面的回应。 但是如果我想处理一个分块的响应呢 我如何使用$http服务来做到这一点???我找到了一种方法来做一些对我来说正确的事情 当然也有websocket api,但它对我的使用很重要 另一种可能是编写另一个http服务,它将控制http响应您可以使用包装XMLHttpRequest的angularjs promise$q定义一个函数 var chunkedRequestWithPromise = function ()

我发现最近的反应有点支离破碎。 我同意,大多数情况下,我们都希望做出全面的回应。 但是如果我想处理一个分块的响应呢


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

我找到了一种方法来做一些对我来说正确的事情

当然也有websocket api,但它对我的使用很重要


另一种可能是编写另一个http服务,它将控制http响应

您可以使用包装XMLHttpRequest的angularjs promise$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);

您可能需要使用$httpInterceptor创建自己的服务。您有分块响应的示例吗?通常是json对象,由\n分隔。您有使用$httpInterceptor的示例吗?对不起,我说错了,不一定是服务,而是将多个响应放在一起的魔力。。。但听起来好像有一个响应包含许多JSON部分?没错。我的想法是在收到每个json对象后立即使用它们。我有这个想法,因为对象列表需要很长时间才能生成和检索。为什么不把每个chuck放入一个主JSON对象中,像使用字典一样使用它呢?{'part1':{},'part2':{}。。。然后你可以编写一个服务或其他东西,为你提供服务,并将其拆分为适当的部分。IE目前不支持EventSource。感谢您的通知,我将继续寻找替代方案