美文网首页
web worker

web worker

作者: ahappyone | 来源:发表于2018-10-12 16:14 被阅读0次

    参考文档:http://www.ruanyifeng.com/blog/2018/07/web-worker.html

    背景:充分利用 CPU 能力,多线程运行脚本

    实践(下方代码):简单的主线程与 worker 之间的通信、终止 wroker

    其他适用场景:需浏览器轮询服务器

    <!DOCTYPE html>

    <html lang="en">

        <meta charset="UTF-8">

        <title>Title

        <div id="hi">

        <div id="hello">

        hehe da

            function createWorker(f) {

    let blob =new Blob(['(' + f.toString() +')()']);

                let url = window.URL.createObjectURL(blob);

                let worker =new Worker(url);

                return worker;

            }

    // worker

            let pollingWorker =createWorker(function (e) {

    // 往主线程发消息

                setInterval(function () {

    self.postMessage('hello');

                }, 1000);

                // 接收主线程消息

                self.addEventListener('message', (e) => {

    self.postMessage('nonono');

                })

    // 内部关闭woker

                setInterval(() => {

    self.close();

                }, 10000)

    });

            // 主线程接收消息

            pollingWorker.onmessage =function (e) {

    console.log('data:', e.data);

                let $ele = document.getElementById('hi');

                let text = $ele.innerHTML;

                $ele.innerHTML = (text + e.data);

                // render data

            }

    // 主线程发送消息

            pollingWorker.postMessage('init');

            // 主线程终止woker

            setInterval(() => {

    pollingWorker.terminate();

            }, 20000)

    </html>

    相关文章

      网友评论

          本文标题:web worker

          本文链接:https://www.haomeiwen.com/subject/otgxxftx.html