@
lisianthus 谢谢你的建议! 我将执行代码部分修改为 web Worker,现在可以在指定时间后结束线程,防止页面卡死了❤️
```
const runCode = (timeout, code) => {
const script = document.createElement('script'); // 创建脚本元素
script.textContent = code; // 元素内写入 code
const blob = new Blob([script.textContent]); // code 转换为 blob 类型
const url = window.URL.createObjectURL(blob); // 将 blob 创建为 url
const worker = new Worker(url); // 创建 Worker 执行脚本内容
worker.onmessage = (msg) => { // 监听 worker 通信
if (msg.data === "close") { // 如果内部已经结束则停止 setTimeout
clearTimeout(time_out)
}
}
worker.addEventListener('error', function (event) {// 监听错误
clearTimeout(time_out)
return event
});
time_out = setTimeout(() => { // 指定时间后强制结束线程
worker.terminate();
console.error("执行超时")
}, timeout);
}
```