Web Worker 比 运行 脚本快吗?

Is a Web Worker faster than running a script?

我的任务是在每个页面上创建一个专用的网络工作者实例,以处理在给定时间间隔内发送服务器请求,而不管用户在哪个页面上。由于这必须适用于任何浏览器,共享网络工作者不是一个选项(因此必须为每个页面加载它)。

我创建了一个脚本,以为我一直在创建一个 worker,但最近我被告知实际上并没有创建 worker,尽管脚本正在执行 webworker 的预期功能。

webworker的基本功能是这样的:

onPageLoad {

    function sendHeartbeat() {
        sendRequest(URL);
    }

    function startHeartbeat() {
        if(timeToSendHeartbeat) {
             sendHeartbeat();
        } else {
             setInterval(timeRemaining, sendHeartbeat());
        }
    }
}

这让我开始思考使用 webworker 是否是最好的选择。使用我缺少的网络工作者是否有一些固有的优势?使用 webworker 是否比将脚本附加到每个页面并按原样 运行 更有效?还是这个应用程序一开始就不适合网络工作者?

WebWorkers 只是 运行 脚本,因此它们不会比其他方法更快。它们通过 运行 在不同的线程中发光,并且不会阻塞 UI 或任何其他想要在主线程中 运行 的代码。

真正的决定因素是代码是否要被工人化 运行s 足够长的时间以导致应用程序的其余部分出现问题。如果您有需要按时触发的间隔或非常长的 运行ning 数学运算,您可能想要启动一个 worker 并让它运行一段时间,然后在最后获取结果。

就主线程而言,worker和API调用在原理上并没有完全不同。您要派其他人去做这项工作,并在他们完成后收集结果。它是发生在服务器上还是发生在另一个线程上并不重要,要关注的部分是主线程而不是在做这项工作。