Я написал класс javascript, который при создании создает веб-работника.Другой метод в этом классе запускает рабочий.Я хочу вызвать метод запуска работника, а затем сделать что-то впоследствии асинхронно.Для лучшего понимания я добавил скелет кода схемы ниже.
Я пытался сгенерировать и сохранить Promise в переменной класса, а затем действовать в соответствии с ним, но это был неправильный анзац.Ссылка на JS Bin .
class Task{
constructor(){
this.data = 0;
//this.listen; //my idea, does not work
this.worker = new Worker('worker.js');
this.worker.onmessage = (function(e){
// worker constantly emits messages
let data = e.data.split(' ');
// suppose message is now availabe as array
this.data = data;
if(data.includes("trigger")){
//trigger signals that the heavy computation is over
/* my idea didn't work:
*this.listen = Promise.resolve(1);
*/
}
}).bind(this);
}
async doTask(){
this.worker.postMessage("start computation");
//wait for the worker to finish calculation
/*my idea
*await this.listen;
*/
//do something after trigger was sent
return 0;
}
}