js怎麼可以實現多執行緒的效果嗎?
小伙看你根骨奇佳,潜力无限,来学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,就像多開了一個線程的感覺。了解的不多,有需要的話可以了解下