如何在调用resizeImage()后调用transformFile()中的"done()"函数?

How to invoke "done()" function in transformFile() after calling resizeImage()?

我对 DropzoneJS 有疑问。这是关于方法transformFile。我使用此方法计算 MD5 并生成预签名上传 URL 到 S3。

当我不需要调整图像大小时它工作得很好,但当我必须这样做时,Dropzone 不会继续上传 - 它只生成 MD5 和预签名 URL。我知道我应该调用 done() 函数,但我不确定在我的情况下该怎么做。

这是我的实现:

transformFile: async function transformFile(file, done) {
    if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {
      //return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);
      return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, async function (result) {
         file.md5 = await calculateMD5(result);
         file.presign = await initUpload(file.name, file.type, file.md5);
         return result;
       });
    } else {
      file.md5 = await calculateMD5(file);
      file.presign = await initUpload(file.name, file.type, file.md5);
      return done(file);
    }
  },

这是来自 Dropzone 的原始版本:

transformFile: function transformFile(file, done) {
    if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {
      return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);
    } else {
      return done(file);
    }
  },

我特别需要用这种方法或以后的方法来做,但我很确定这是我生成 MD5 和预签名 URL 的最后可能时刻。任何帮助将不胜感激。

 transformFile: async function transformFile(file, done) {
    if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {
      return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, async function (result) {
         file.md5 = await calculateMD5(result);
         file.presign = await initUpload(file.name, file.type, file.md5);
         done(result);
       });
    } else {
      file.md5 = await calculateMD5(file);
      file.presign = await initUpload(file.name, file.type, file.md5);
      return done(file);
    }
  },