简介
wrker是一个轻量级的JavaScript前端库,它能够允许我们在Web应用程序中完成一些比较费时的工作而不会中断用户的其他活动。它的核心正是使用了Web Workers,在一个单独的线程中异步处理我们的代码,从而避免阻塞应用程序。本文将详细介绍如何使用该包。
安装
可以通过npm安装wrker:
--- ------- -----
也可以手动下载库并使用脚本标签引入。
使用
创建Worker
首先,我们需要创建一个新的Worker。我们可以使用wrker提供的wrkerify()函数来解析一个传入的模块,然后将其委派给Worker:
------ -------- ---- -------- ----- --------- - --- ------------------ ----------------- ----- ------ - --- --------------------------- - ----- -------- ---
这里我们传递了一个名为worker.js的JavaScript模块,它包含我们要执行的任务。通过wrkerify()函数将这个模块编译成“工人可用”的形式。worker.js可以是任何具有可导出函数的模块。例如:
------ -------- ------ -- - ------ - - -- - ------ -------- ----------- -- - ------ - - -- -
发送消息给Worker
现在,我们已经有了一个Worker实例,并已经委派了我们的代码。我们现在需要将消息发送到Worker并在工作者线程中执行:
-------------------- ------- ------ ------- --- --- ---
postMessage()函数允许我们将任何一个可序列化的数据类型发送给Worker。在这个例子中,我们传递了一个包含method和params两个属性的对象。这个对象将告诉Worker调用哪个导出函数以及传递哪些参数。
接收Worker的回复
当Worker完成任务时,它将通过postMessage()函数向主线程发送一条消息。为了接收消息,我们需要使用onmessage事件处理程序:
---------------- - ------- -- - -------------------- ---------------- --
在这里,我们将onmessage事件设置为将解决事件的data属性打印到控制台。
关闭Worker
当我们已经完成任务并且不再需要Worker时,我们应该关闭它。我们可以通过调用worker.terminate()来做到这一点。关闭一个Worker将立即终止它的线程和所有正在进行的任务。
-------------------
总结
wrker是一个强大的工具,使我们能够在Web应用程序中执行费时任务而不会阻塞用户界面。使用wrker,我们可以创建一个新的Worker,并将其委派给我们要完成的任务。我们可以通过postMessage()将任务发送到Worker并接收工作者线程的回复。使用terminate()函数我们可以关闭Worker并终止其线程。使用wrker可以提高Web应用程序的性能和用户体验。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/600671148dd3466f61ffe59b