我发现最近的分块响应。我同意大多数时候我们希望做出全面的回应。但是,如果我想处理分块响应怎么办。
我将如何使用 $http 服务来做到这一点?
您可以使用包装 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);
我找到了一种对我来说看起来正确的方法 http://www.igvita.com/2011/08/26/server-sent-event-notifications-with-html5/
当然还有 websocket api,但它对我的使用来说很重
另一种可能性是编写另一个 http 服务来控制 http 响应