您可以在浏览器中启动一个web工作者,并在任何时候终止它。以下示例演示如何在工作进程运行完其所有内容之前终止它:
(我正在从一个blob创建一个工人,用于演示目的。此外,这是在chrome中完成的,可能需要一些特定于浏览器的更改才能在其他浏览器(如
shown in this question
)
const workerScript = `
setTimeout(function () {
postMessage('You will see this');
}, 1000);
setTimeout(function () {
postMessage('You will NOT see this');
}, 5000);
`;
const blob = new Blob([workerScript], {type: 'application/javascript'});
const worker = new Worker(URL.createObjectURL(blob));
worker.onmessage = function(e) {
console.log(e.data);
};
// You will only see ONE log from the worker
// if you change the timeout (ex. 6000), you will see two
setTimeout(() => {
worker.terminate();
}, 3000);