【问题标题】:Angularjs HTTP service POST progress eventAngularjs HTTP服务POST进度事件
【发布时间】:2015-08-19 22:22:35
【问题描述】:

由于有关该主题的大多数主题都已有一年多的历史,因此我问自己是否有任何好的解决方案来跟踪来自 http 服务的 ajax 进度事件(用于加载栏或跟踪如何它已经下载了很多字节)。不使用第 3 方:)

这些事件:

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

【问题讨论】:

  • 问题是什么?
  • "有任何好的解决方案可以从 http 服务跟踪 ajax 进度事件"

标签: javascript ajax angularjs


【解决方案1】:

我已经做了类似的事情,使用带有通知进度的承诺:

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;

【讨论】:

    猜你喜欢
    • 2013-09-22
    • 1970-01-01
    • 2020-04-06
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    相关资源
    最近更新 更多