多线程

作者: 0说 | 来源:发表于2018-10-30 23:11 被阅读0次
    <body>
        <div id='content'>单线程点击事件</div>
        <div id='db'>多线程点击事件</div>
        <script>
            content.onclick = function(){
                let str = '',
                    num = 50000
                console.time(1)
                for (let i = 0; i < num; i++) {
                    str += String.fromCharCode(i)   
                }
                console.timeEnd(1)
            }
            
            db.onclick = function(){
                 let num = 50000
                console.time(2)
                // 实例多线程对象
                let w = new Worker('webWorker.js')
                console.log(w)
                // 传输数据
                w.postMessage(num)
                // 接收处理结果
                w.onmessage = function(e){
                    console.log(e.data)
                }
                console.timeEnd(2)
            }
    
        </script>
    </body>
    

    webWorker.js

    // 监听父级的数据 在事件对象里
    self.onmessage = function(e){
        let str = ''
    
        for (let i = 0; i < e.data; i++) {
            str += String.fromCharCode(i)   
        }
    
        // 发送处理结果
        self.postMessage(str)
    }
    
    
    

    Worker()构造函数的参数是一个脚本文件,该文件就是 Worker 线程所要执行的任务。由于 Worker 不能读取本地文件,所以这个脚本必须来自网络。如果下载没有成功(比如404错误),Worker 就会默默地失败。
    必须在服务器环境下打开才可以

    相关文章

      网友评论

          本文标题:多线程

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