1

将文件添加到 Dropzone 会冻结 Firefox (v61) 几分钟,而 Chrome 和 Edge 则不会:

在我的 Ember 项目/应用程序中有一个 Dropzone 文件上传区域。当我将文件添加到队列中时,FF 将“冻结”一个文件,例如一分钟,直到 FF 再次可用于进一步交互,例如按下上传按钮。

此行为与选择拖放或单击并选择无关。

如果所选文件最近在几分钟内上传或处理,则不会发生这种冻结,但如果所选文件中的单个文件(显然)被 FF“未知”,则会发生至少一分钟的延迟。这是否表明与缓存有联系......???令人困惑。

除了杀死 FF 之外,我不知道打破这种“冻结”的另一种方法,在此期间它一直在运行 25% 左右的 CPU(即 100% 的四个 CPU 之一)。在 kill 之后,我找不到任何关于这种繁重 CPU 活动的原因或位置的踪迹。

FF 在 Kubuntu 和 W10 上都失败了。Chrome 或 Edge 不会发生此行为。

随附的代码描述是仅用于显示基本思想的摘录。我没有考虑任何 autoProcessQueue 替代方案,但希望在上传之前有一个概述和编辑机会:

...
export default Ember.Component.extend({
  classNames: ['dropzone'],
  ...
  parallelUploads: 8,
  addRemoveLinks: true,
  thumbnailWidth: 100,
  thumbnailHeight: 100,
  acceptedFiles: 'image/*',
  autoProcessQueue: false,
  ... // all others null or empty
  ...
  init: function () {
    onDragEnterLeaveHandler(this);
    this.on("addedfile", function(file) {
      document.getElementById("uploadPics").style.display = "inline"; // button processFileQueue 
      document.getElementById("removeAll").style.display = "inline";  // " removeAllFiles
      var namepic = file.name.replace(/.[^.]*$/, ""); // remove ext
      file.status = Dropzone.ADDED;
    });
    this.on("queuecomplete", function() {
      document.getElementById("uploadPics").style.display = "none";
    });
  },
  ...
  actions: {
    processFileQueue() {
      return new Ember.RSVP.Promise ( () => {
        qlen = this.myDropzone.getQueuedFiles().length;
        if (qlen > 0) {
          this.myDropzone.processQueue ();
        }
      }).then (null);
    },
    removeAllFiles() {
      this.myDropzone.removeAllFiles();
      document.getElementById("removeAll").style.display = "none";
    },
    ...
  }
});
有没有人知道正在发生的事情或如何开始调查正在发生的事情?

4

0 回答 0