0

I have a class which contains a function, so I want to be able to call a class method inside the function

I want to find a way to access the class method send and the attribute file inside the worker_fn function ?

class Upload {
  * uploadFiles(files: FileList | File[]) {
    let file;
    for (let i = 0; i < files.length; i++) {
      if (filesAdded === 1) {
        break;
      }
      file = files[i];
      if (this.types.indexOf(file.type) > -1) {
        filesAdded++;
      } else {
        this._showBadExtensionError();
        return false;
      }
    }
    var worker_fn = () => {
      this.send(file); // i want to able to access send() method and file attribute above 
      self.postMessage('upload sucessfully...');
    };
    var blob = new Blob(["onmessage =" + worker_fn.toString()], {
      type: "text/javascript"
    });

    var worker = new Worker(window.URL.createObjectURL(blob));

  }
  send(file: File, url) {
    let formData = new FormData();
    formData.append('file', file, file.name);
    const response = await this.apiRequest.POST(url, formData);
    return response.json();
  }

}
2
  • 2
    The Worker runs in an isolated context from your main script - you can't directly pass functions, Files, etc.. to it - you can only communicate with it via messages, see Using WebWorkers Commented Sep 10, 2019 at 9:27
  • WTH is uploadFiles a generator method? Commented Sep 10, 2019 at 18:09

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.