同步模式(Synchronous)
概念:
程式碼中的任務依次排隊執行,執行順序與程式碼的編寫順序是完全一致的。在單執行緒下大多數任務都會以同步模式去執行
執行講解:
例:
console.log('begin')
function A(){
console.log('A task')
}
function B(){
console.log('B task')
A()
}
B()
cosnole.log('end')
1、js執行引擎會把整體的程式碼全部載入進來
2、然後在呼叫棧(Call stack)當中壓入一個匿名(anonymous)的呼叫,這個匿名的呼叫可以理解為把全部的程式碼放入到一個匿名的函式當中去執行,然後去逐行執行
3、呼叫棧中依次壓入上述程式碼去執行,呼叫棧中:
(anonymous) 逐行執行
console.log(‘begin’) 執行 彈出
B() 執行
console.log(‘B task’) 執行 彈出
A()執行
console.log(‘A task’) 執行 彈出
A()彈出
B()彈出
cosnole.log(‘end’) 執行 彈出
(anonymous) 彈出
呼叫棧的理解
呼叫棧只是一個更專業的說法,通俗的解釋是,js在執行引擎中維護了一個正在執行的工作表,當工作表中的所有任務被清空完後,這一輪的工作就結束了
問題:如果某一任務執行時間過長,後面的任務就要延遲(阻塞),一直等待,這種阻塞對使用者來說,介面就會卡頓或者卡死,這就必須要非同步任務來解決程式中無法避免的耗時操作,例如ajax,node.js中的大檔案讀寫等避免程式碼被卡死
相關文章
- Simple FSM 3(synchronous reset)
- Simple FSM1(synchronous reset)
- Simple FSM2(synchronous reset)
- 通訊機制 synchronous communication
- 【設計模式】非同步阻塞、非同步回撥模式設計模式非同步
- PostgreSQL DBA(161) - pgAdmin(synchronous_commit)SQLMIT
- 非同步模式(Asynchronous)非同步模式
- Python中非同步模式Python非同步模式
- 介面卡模式:非同步轉化為同步。模式非同步
- Promise非同步控制流模式Promise非同步模式
- 【譯】async 的非同步操作模式非同步模式
- 原始碼解析Synchronous Queue 這種特立獨行的佇列原始碼佇列
- rocketMq之雙主雙從同步模式搭建MQ模式
- 深入理解C#中的非同步(一)——APM模式EAP模式C#非同步模式
- 非同步程式設計:基於事件的非同步程式設計模式(EAP)非同步程式設計事件設計模式
- 非同步程式設計模式BeginInvoke和EndInvoke方法非同步程式設計設計模式
- [20180316]非同步IO和共享服務模式.txt非同步模式
- C++屌屌的觀察者模式-同步回撥和非同步回撥C++模式非同步
- 關於應用整合:同步與非同步通訊模式之間的比較非同步模式
- React Fiber原始碼分析 第二篇(同步模式)React原始碼模式
- 說一說併發設計模式—Future(非同步)設計模式非同步
- IO模式和IO多路複用(阻塞IO、非阻塞IO、同步IO、非同步IO等概念)模式非同步
- synchronized 同步執行緒 單例設計模式+double checkingsynchronized執行緒單例設計模式
- MongoDB主從模式手動強制同步資料方法MongoDB模式
- IO通訊模型(二)同步非阻塞模式NIO(NonBlocking IO)模型模式BloC
- 《Node.js設計模式》高階非同步準則Node.js設計模式非同步
- 基於Pub/Sub模式的阿里雲IoT同步呼叫詳解模式阿里
- Emacs 系列(四):使用 Org 模式自動管理郵件及同步文件Mac模式
- Java併發(二十三)----同步模式之保護性暫停Java模式
- Next App Router 模式下,如何同步服務端 Redux 初始狀態?APP模式服務端Redux
- rsync檔案同步工具常見模式有哪些?linux運維學模式Linux運維
- 《Node.js設計模式》基於回撥的非同步控制流Node.js設計模式非同步
- Mysql半同步複製模式說明及配置示例 - 運維小結MySql模式運維
- .Net Core自實現CLR非同步程式設計模式(Asynchronous programming patterns)非同步程式設計設計模式
- 同步和非同步非同步
- 架構設計 | 非同步處理流程,多種實現模式詳解架構非同步模式
- 同步方法及同步塊
- nodejs非同步轉同步NodeJS非同步