Javascript 唯一标识上载

Javascript 唯一标识上载,javascript,html,Javascript,Html,我正在使用以下代码上载文件: var xhr = new XMLHttpRequest(); xhr.upload.addEventListener("progress", uploadProgress, false); xhr.open("POST", requestUrl, true); xhr.send(f); 请注意,我正在附加一个侦听器以上载进度: function uploadProgress(evt) { // Which upload was it? } 这里有一个问

我正在使用以下代码上载文件:

var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.open("POST", requestUrl, true);
xhr.send(f);
请注意,我正在附加一个侦听器以上载进度:

function uploadProgress(evt)
{
    // Which upload was it?
}

这里有一个问题,如果我有多个上载同时发生,并且它们共享同一个事件处理程序,我如何确定哪个上载触发了事件?

尝试将其包装为控件

var uploadProgress = function(uploadObj, event) {
  // Do somthing about uploadObj
}

// Target maybe object or string, whatever you want
var Uploader = function(target) {
  var xhr = new XMLHttpRequest();
  var handler = uploadProgress.bind(this, target);
  xhr.upload.addEventListener("progress", handler, false);
  xhr.open("POST", target, true);
  xhr.send(f);
}
.bind将返回一个新函数,当执行新函数时,它将:

  • 在这里使用
    这个
    ,上传程序作为它的上下文
  • 执行uploadProgress并将
    target
    作为第一个参数传递,这样progess事件给出的evt将传递给uploadProgress中的第二个参数

  • 不会像现在这样工作,但可能会让我走上正确的方向。如果在此期间没有更好的东西出现,我明天就去试试。