or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
Event loop
tags:
javascript
、advanced
、broswer
簡介
當在瀏覽器運行 Javascript 時,瀏覽器一般是採用 single thread 的機制在運行,這個機制意思是一次只會跑一個動作或任務。
因此,需要一項機制來運行非同步的任務,這個機制其中一個項目叫做 Event loop。
而其中又包括 call stack 和 callback queue 的概念。
延伸閱讀
Process & Thread
Process 是程序,一個程式在執行的時候,可以有很多個 Process 多工運作,像是 windows 打開工作管理員,會看到許多的處理程序,就好像每個程序都是一個小程式在執行。Chrome 瀏覽器每個分頁都是個程序,因此當今天一個分頁當掉並不會影響其它分頁運作的情況。
Thread 是執行緒,一個 Process 可以有很多個 Thread 在作業。今天如果一個程式分別要提供一項功能給 A 和 B 的使用者的話,最好應該開兩個 Thread 各別處理 A 與 B 的執行,而不是兩個 Process,因為每開一個 Process 就會佔用伺服器的處理空間,開越多只會負荷越大,因此最好在執行供應給不同使用者的時候,是另外開 Thread,而不是 Process。
「一個程式可以有很多個 Process;一個 Process 可以有多個 Thread。」
延伸閱讀