Angularjs HTTP服务POST进度事件

时间:2015-08-19 14:13:11

标签: javascript ajax angularjs

由于关于此主题的大多数主题已超过一年,我问自己是否有从http服务跟踪ajax进度事件的任何好方法(对于加载栏或跟踪如何它下载了很多字节)。不使用第三方:)

这些事件:

var ajax = new XMLHttpRequest();
ajax.addEventListener("progress")
ajax.addEventListener("load")
ajax.addEventListener("error")
ajax.addEventListener("abort")

1 个答案:

答案 0 :(得分:2)

我使用了一个承诺通知了进展:

var deferred = $q.defer();

var fd = new FormData();
fd.append("Filename", file.name);
fd.append("file", file);
var xhr = new XMLHttpRequest();

xhr.upload.addEventListener("progress", function (event) {
      deferred.notify(event);
}, false);

xhr.addEventListener("load", function (data) {
     deferred.resolve(event.target.response);
}, false);

xhr.addEventListener("error", function (data) {
     deferred.reject(event.target.response);
}, false);

xhr.addEventListener("abort", function (data) {
     deferred.reject(event.target.response);
}, false);

xhr.open("POST", URL);
xhr.send(fd);

return deferred.promise;