浏览器多线程——web worker

一、阮一峰Web Worker使用教程

阮一峰Web Worker使用教程

二、web worker的简单使用

  1. 在同一页面中使用<script>作为worker的脚本文件

    <!DOCTYPE html>
    <html>
      <head></head>
      <body>
        <button onclick="createWorker()">创建worker线程并发送消息</button>
        <script id='SCRIPT_worker'>
          // 将作为线程的程序脚本
          self.onmessage = (_e) => {
           
           
            console.log('[WORKER] received: ' + _e.data)
            self.postMessage('You said: ' + _e.data)
          }
          setTimeout(() => {
           
           
            console.log(self.name)
          }, 1000)
          setTimeout(() => {
           
             // 不会打印,因为3000ms后该线程已经在主线程中被关闭了
              console.log(self.name)
            }, 3000)
        </script>
        <script>
          function createWorker() {
           
           
            // 使用<script>作为线程worker_1的脚本
            let blob = new Blob([document.getElementById('SCRIPT_worker').textContent])
            let url = window.URL.createObjectURL(blob)
            let worker = new Worker(url, {
           
           name: 'worker_1'})
            worker.onmessage = (_e) => {
           
           
              console.log('[MAIN] received: ' + _e.data);
            }
            worker.postMessage('Hello!')
            setTimeout(() => {
           
           
              worker.terminate()
            }, 2000)
          }
        </script>
      </body>
    </html>
    

猜你喜欢

转载自blog.csdn.net/SJ1551/article/details/109243771