javascript - Wie kann JS einen Multithreading-Effekt erzielen?
伊谢尔伦
伊谢尔伦 2017-05-19 10:26:22
0
5
603

Wie kann js einen Multithreading-Effekt erzielen?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

Antworte allen(5)
过去多啦不再A梦

首先说一下JS的执行原理:js引擎执行js代码的时候是单线程的,即同一时刻只会有一个进程执行JS代码,回调函数也是一个一个执行的(按照事件发生的顺序,而不是代码的顺序)。JS中的异步通信和定时是由另外的线程实现的,脱离js线程上下文。以JS定时操作举例,当JS引擎执行setTimeout(callbackFunction, 100)操作时,它会通知定时线程我需要100毫秒的定时,之后JS引擎进入事件循环。100毫秒之后,定时引擎向事件队列中加入一个时间已到的事件。JS引擎从队列中读取时间已到的事件,执行callbackFunction。 如果同一时间有多个事件加入事件队列,JS引擎也只会一个一个的执行callback。对于异步也是同样,JS代码发起通信请求,通信线程执行通信操作,并在操作完成后将完成事件加入事件队列。JS引擎从队列中取出事件并调用回调处理通信结果。JS引擎在执行回调函数的时候,不能同时响应其他事件。

黄舟

js的web worker,可以在后台线程进行一些大量的运算而不阻塞主线程;通过postmessage,和onmessage和主线程通讯;但是有限制不能操作DOM和某些api;详细的你可以去看文档。

洪涛

javascript是单线程的。

黄舟

javascript 是线程的, 要想实现多线程的效果可以考虑 node.js 通过 node的事件 来达到目的。

漂亮男人

如果是用在浏览器里面的话,现在有个service Worker的东西可以在后台跑一些js,就像多开了一个线程的感觉。了解的不多,有需要的话你可以了解下

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage