AngularJS http事件处理程序与上传事件处理程序

AngularJS http eventHandlers vs uploadEventHandlers

本文关键字:事件处理 程序 AngularJS http      更新时间:2023-09-26

我正在尝试跟踪post请求的进度,我只从uploadEventHandlers获得进度,而不是从eventHandlers得进度(请参阅下面的代码)。我从uploadEventHandlers获得的进度包含传输长度和总长度,这非常棒。然而,我有这些问题:

  1. eventHandlers用于什么
  2. 比方说,在上传完所有数据后,服务器必须执行时间消耗对该数据的操作(网络传输、文件解压缩),然后返回HTTP响应。有什么办法吗服务器可以向客户端指示进度(此外日志数据库和客户端轮询)

$http({
    url: baseUrlService.baseURL + 'importtifile',
    method: 'POST',
    data: myData
    eventHandlers: {
        progress: function(e) {
            console.log(e);
        }
    },
    uploadEventHandlers: {
        progress: function(e) {
            console.log(e);
        }
    }
}).then(
...
  1. eventHandler用于附加和处理其他事件。仅使用uploadEventHandlers来跟踪上传文件的进度
  2. 您可以使用eventHandlers-->readystatechange来跟踪连接的状态。因此,当readyState等于4时,您就知道服务器已经关闭了连接

注意:您可以通知用户,在上传文件达到100%后,服务器将执行额外的工作。

这是您修改后的代码:

$http({
    url: baseUrlService.baseURL + 'importtifile',
    method: 'POST',
    data: myData
    eventHandlers: {
        readystatechange: function(event) {
                        if(event.currentTarget.readyState === 4) {
                            console.log("readyState=4: Server has finished extra work!");
                        }
                    }
    },
    uploadEventHandlers: {
        progress: function(e) {
             if (e.lengthComputable) {
                progress = Math.round(e.loaded * 100 / e.total);
                console.log("progress: " + progress + "%");
                if (e.loaded == e.total) {
                  console.log("File upload finished!");
                  console.log("Server will perform extra work now...");
                }
            }
        }
    }
}).then(
...