我们可以使用Web Workers来在后台运行async函数。下面是一个示例代码,其中我们创建了一个新的Web Worker并传递了我们要运行的async函数。
// async function to be run in background
async function compute() {
// some heavy computations here...
return result;
}
// creating a new Web Worker
const myWorker = new Worker('worker.js');
// sending the async function to the worker
myWorker.postMessage({ type: 'compute', data: compute.toString() });
// receiving the result from the worker
myWorker.onmessage = (event) => {
const result = event.data;
// do something with the result...
}
在worker.js文件中,我们处理传递过来的async函数并调用它,然后将结果发送回主线程。
// handling messages from the main thread
onmessage = async (event) => {
const { type, data } = event.data;
switch (type) {
case 'compute':
// converting the async function to a regular function
const func = new Function(`return (${data})()`);
const result = await func();
postMessage(result);
break;
}
};
这样我们就可以在JavaScript中在后台运行async函数了。