阮一峰關於js同步非同步的解釋
所謂"單執行緒",就是指一次只能完成一件任務。如果有多個任務,就必須排隊,前面一個任務完成,再執行後面一個任務,以此類推。
這種模式的好處是實現起來比較簡單,執行環境相對單純;壞處是隻要有一個任務耗時很長,後面的任務都必須排隊等著,會拖延整個程式的執行。常見的瀏覽器無響應(假死),往往就是因為某一段Javascript程式碼長時間執行(比如死迴圈),導致整個頁面卡在這個地方,其他任務無法執行。
為了解決這個問題,Javascript語言將任務的執行模式分成兩種:同步(Synchronous)和非同步(Asynchronous)。
"同步模式"就是上一段的模式,後一個任務等待前一個任務結束,然後再執行,程式的執行順序與任務的排列順序是一致的、同步的;"非同步模式"則完全不同,每一個任務有一個或多個回撥函式(callback),前一個任務結束後,不是執行後一個任務,而是執行回撥函式,後一個任務則是不等前一個任務結束就執行,所以程式的執行順序與任務的排列順序是不一致的、非同步的。
"非同步模式"非常重要。在瀏覽器端,耗時很長的操作都應該非同步執行,避免瀏覽器失去響應,最好的例子就是Ajax操作。在伺服器端,"非同步模式"甚至是唯一的模式,因為執行環境是單執行緒的,如果允許同步執行所有http請求,伺服器效能會急劇下降,很快就會失去響應。
相關文章
- 阮一峰快速排序排序
- 如何給女朋友解釋什麼是IO中的阻塞、非阻塞、同步、非同步?非同步
- 關於forEach同步非同步的問題非同步
- 關於同步的一點思考-下
- 對於同步、非同步、阻塞、非阻塞的幾點淺薄理解非同步
- 同步非同步,阻塞非阻塞非同步
- 非同步、同步、阻塞、非阻塞非同步
- 基於 mysql 非同步驅動的非阻塞 Mybatis 瞭解一下MySql非同步MyBatis
- 阮一峰部落格精選
- 同步、非同步、阻塞、非阻塞的區別非同步
- 同步非同步 與 阻塞非阻塞非同步
- 理解阻塞、非阻塞、同步、非同步非同步
- 同步、非同步,阻塞、非阻塞理解非同步
- 同步、非同步、阻塞與非阻塞非同步
- 關於js延遲載入(非同步操作)的方式JS非同步
- IO - 同步 非同步 阻塞 非阻塞的區別非同步
- JS 非同步和同步JS非同步
- 值得學習的技術人——阮一峰
- 一篇文章讀懂阻塞,非阻塞,同步,非同步非同步
- 同步阻塞、同步非阻塞、多路複用的介紹
- JS中的非同步解決方案JS非同步
- [翻譯]阮一峰webpack教程(Demo集合)Web
- 阮一峰每週分享第 2 期
- 阮一峰的ES6---let和const命令
- 阮一峰的ES6---Class的基本語法
- 一直讓 PHP 程式設計師懵逼的同步阻塞非同步非阻塞,終於搞明白了PHP程式設計師非同步
- 關於內外網資料同步解決方案
- 徹底搞懂同步非同步與阻塞非阻塞非同步
- js 非同步的幾種解決方案JS非同步
- 阻塞非阻塞和同步非同步的區分 參考一些書籍非同步
- java同步非阻塞IOJava
- 怎樣理解阻塞非阻塞與同步非同步的區別?非同步
- 關於非同步爬蟲排序的困惑非同步爬蟲排序
- 前端非同步的解釋-概念性前端非同步
- 關於JS下大批量非同步任務按順序執行解決方案一點思考JS非同步
- fastapi 關於執行緒池、同步、非同步的問題解答彙總ASTAPI執行緒非同步
- 如何解讀 Java IO、NIO 中的同步阻塞與同步非阻塞?Java
- 從同步原語看非阻塞同步以及Java中的應用Java