Я разрабатываю приложение angular, которое создает несколько веб-работников и выполняет отдельные работы в рабочих потоках. Мое приложение считывает файл, введенный нажатием кнопки, а затем создает новых рабочих в соответствии с [array.length], заданным внутри файла. Это работает хорошо. Теперь мне нужно прекратить работу всех веб-работников, нажав кнопку «Стоп». Ниже приведены два метода, которые я использовал в два нажатия кнопки.
public i = 0;
public file: any;
public noOfOrders: number;
private worker: Worker;
public uploadDocument(): void {
const fileReader = new FileReader();
fileReader.onload = (e) => {
const k = JSON.parse(fileReader.result.toString());
this.noOfOrders = Math.round(k.orders_per_second / k.credentials.length);
if (typeof Worker !== 'undefined') {
while (this.i < k.credentials.length) {
this.worker = new Worker('./app.worker', { type: 'module' });
this.worker.onmessage = ({ data }) => {
console.log(data + k.credentials.length);
};
this.worker.postMessage({ data: k.credentials[this.i], orders: this.noOfOrders });
this.i++;
}
}
};
fileReader.readAsText(this.file);
}
public stop(): void { // this method only terminates the final worker thread
this.worker.terminate();
}