js线程

作者: haha2333 | 来源:发表于2019-10-03 11:18 被阅读0次

我们都能说出js是单线程的

但是为什么js是单线程的呢??

JavaScript 的主要用途是与用户互动,以及操作 DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如两个线程同时操作了dom,浏览器渲染应该听谁的呢?

为了利用多核 CPU 的计算能力,HTML5 提出 Web Worker标准,允许 JavaScript 脚本创建多个线程,但是子线程完全受主线程控制,且不得操作 DOM。所以,这个新标准并没有改变 JavaScript 单线程的本质。

引出新知识点Web Worker
web worker遵循同源策略
比如轮询中使用web worker监听服务端数据的变化
主线程创建web worker:

var worker =  new Worker('work.js');  //js文件,而且必须是网络请求

主线程调用postMessage进行通信

worker.postMessage('Hello World');
worker.postMessage({method: 'echo', args: ['Work']});

子线程进行监听接收

Window.addEventListener(‘message’,function(event){  event.data...  }

主线程通过worker.onmessage指定监听函数,接收子线程发回来的消息。

worker.onmessage = function (event) {
  console.log('Received message ' + event.data);
  doSomething();
}
function doSomething() {
  // 执行任务
  worker.postMessage('Work done!');
}

那么单线程的js怎么执行异步代码的呢?
虽然js是单线程的,但是浏览器确是多线程的。https://www.jianshu.com/p/5686c1f80f49

相关文章

  • 事件循环机制

    js是单线程的。浏览器: js执行线程:负责执行js代码 UI线程:负责UI展示,负责展示给用户看到的页面 js事...

  • 01.JS执行机制

    浏览器常驻线程 我们常说JS是单线程,但是浏览器中包含了很多线程-- js引擎线程(解释执行js代码,用户输入,网...

  • js event-loop

    单线程 js是单线程是众所周知的事情,那么为什么js会被设计成单线程呢。因为如果js为多线程的话。如果一个线程在读...

  • JavaScript 执行机制

    五个线程 js引擎线程: 执行js代码GUI线程: 绘制用户界面http网络请求线程: 处理网络请求, 等请求返回...

  • js同步异步编程(2)

    js中的同步异步编程 > 浏览器是多线程的,JS是单线程的(浏览器之分配一个线程来执行JS) > 进程大线程小: ...

  • 关于线程队列的一点认识

    js运作在浏览器中,是单线程的,即js代码始终在一个线程上执行。js引擎有多个线程,一个主线程,其它的后台配合主线...

  • javascript单线程,异步与执行机制

    js的单线程模型与游览器的进程/线程息息相关,在了解js单线程与异步的时候,建议先看看这篇文章 单线程/异步 js...

  • js运行机制

    一、js单线程1.单线程的含义是js只能在一个线程上运行,也就说,js同时只能执行一个js任务,其它的任务则会排队...

  • (17.06.30)多线程、单线程、子线程、主线程、简历、微信、

    WebWorker    多线程     js是单线程的     一个线程就是一个js文件    把复杂的计算,交...

  • Event Loop

    JS是单线程的 JavaScript语言最大特点就是单线程,但是这里的单线程指的是主线程是单线程的。那为什么js要...

网友评论

      本文标题:js线程

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