国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

簡單了解JavaScript異步

2024-05-06 15:39:05
字體:
來源:轉載
供稿:網友

一直以來都知道JavaScript是一門單線程語言,在筆試過程中不斷的遇到一些輸出結果的問題,考量的是對異步編程掌握情況。一般被問到異步的時候腦子里第一反應就是Ajax,setTimseout...這些東西。在平時做項目過程中,基本大多數操作都是異步的。JavaScript異步都是通過回調形式完成的,開發過程中一直在處理回調,可能不知不覺中自己就已經處在回調地獄中。

瀏覽器線程

在開始之前簡單的說一下瀏覽器的線程,對瀏覽器的作業有個基礎的認識。之前說過JavaScript是單線程作業,但是并不代表瀏覽器就是單線程的。

在JavaScript引擎中負責解析和執行JavaScript代碼的線程只有一個。但是除了這個主進程以外,還有其他很多輔助線程。那么諸如onclick回調,setTimeout,Ajax這些都是怎么實現的呢?即瀏覽器搞了幾個其他線程去輔助JavaScript線程的運行。

瀏覽器有很多線程,例如:

1.GUI渲染線程 - GUI渲染線程處于掛起狀態的,也就是凍結狀態
2.JavaScript引擎線程 - 用于解析JavaScript代碼
3.定時器觸發線程 - 瀏覽器定時計數器并不是 js引擎計數
4.瀏覽器事件線程 - 用于解析BOM渲染等工作
5.http線程 - 主要負責數據請求
6.EventLoop輪詢處理線程 - 事件被觸發時該線程會把事件添加到待處理隊列的隊尾
7.等等等

從上面來看可以得出,瀏覽器其實也做了很多事情,遠遠的沒有想象中的那么簡單,上面這些線程中GUI渲染線程,JavaScript引擎線程,瀏覽器事件線程是瀏覽器的常駐線程。

當瀏覽器開始解析代碼的時候,會根據代碼去分配給不同的輔助線程去作業。

進程

進程是指在操作系統中正在運行的一個應用程序

線程

線程是指進程內獨立執行某個任務的一個單元。線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧)。

進程中包含線程,一個進程中可以有N個進程。我們可以在電腦的任務管理器中查看到正在運行的進程,可以認為一個進程就是在運行一個程序,比如用瀏覽器打開一個網頁,這就是開啟了一個進程。但是比如打開3個瀏覽器,那么就開啟了3個進程。

同步&異步

既然要了解同步異步當然要簡單的說一下同步和異步。說到同步和異步最有發言權的真的就屬Ajax了,為了讓例子更加明顯沒有使用Ajax舉例。(●ˇ∀ˇ●)

同步

同步會逐行執行代碼,會對后續代碼造成阻塞,直至代碼接收到預期的結果之后,才會繼續向下執行。

console.log(1);alert("同步");console.log(2);// 結果:// 1// 同步// 2

異步

如果在函數返回的時候,調用者還不能夠得到預期結果,而是將來通過一定的手段得到結果(例如回調函數),這就是異步。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 晋中市| 台安县| 新宁县| 灵川县| 中方县| 蕉岭县| 海口市| 巴青县| 青阳县| 扎囊县| 南华县| 三门县| 平远县| 十堰市| 平凉市| 大港区| 克什克腾旗| 余庆县| 连城县| 许昌市| 威信县| 新津县| 九江市| 中西区| 砚山县| 公安县| 图木舒克市| 张掖市| 建始县| 长治县| 西峡县| 当雄县| 昔阳县| 苏尼特右旗| 安顺市| 岗巴县| 北流市| 卢湾区| 永宁县| 渝北区| 镇江市|