深刻淺出Node.js - 異步編程

異步編程

異步編程的優點和難點


曾經的單線程模型在同步I/O的影響下,因爲I/O調用緩慢,應用層面CPU和I/O沒法重疊進行。可是該模型符合編程人員的閱讀思惟習慣,所以同步I/O盛行了不少年。可是該模型存在性能問題,過去能夠經過多線程的方式提高性能。可是從操做系統調度多線程的上下文切換開銷,到實際編程裏鎖,同步等問題,讓開發人員頭疼的時候並很多。javascript

優點

Node帶來的最大優點是基於事件驅動的非阻塞I/O模型。Node經過事件循環的方式實現異步I/O,javascript線程負責分配任務和處理結果。I/O線程池裏的線程完成分配的任務。因此能夠保持總體的高效率。java

難點

  1. 異常處理
    在編寫異步方法時,只要將異常正確的傳遞給用戶的回調方法便可,無需過多處理。
  2. 函數嵌套過深
  3. 阻塞代碼
  4. 多線程編程
  5. 異步轉同步

異步編程解決方案


  1. 事件發佈/訂閱模式
  2. Promise/Deferred模式
  3. 流程控制庫

異步併發控制

相關文章
相關標籤/搜索