84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
Wie kann js einen Multithreading-Effekt erzielen?
小伙看你根骨奇佳,潜力无限,来学PHP伐。
首先说一下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,就像多开了一个线程的感觉。了解的不多,有需要的话你可以了解下
首先说一下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,就像多开了一个线程的感觉。了解的不多,有需要的话你可以了解下