# 學習重點
綜上所述
* Async函數是趨勢,如果Chrome 52\. v8 5.1已經支持Async函數([https://github.com/nodejs/CTC/issues/7)了,Node.js支持還會遠么?](https://github.com/nodejs/CTC/issues/7)%E4%BA%86%EF%BC%8CNode.js%E6%94%AF%E6%8C%81%E8%BF%98%E4%BC%9A%E8%BF%9C%E4%B9%88%EF%BC%9F)
* Async和Generator函數里都支持promise,所以promise是必須會的。
* Generator和yield異常強大,不過不會成為主流,所以學會基本用法和promise就好了,沒必要所有的都必須會。
* co作為Generator執行器是不錯的,它更好的是當做Promise 包裝器,通過Generator支持yieldable,最后返回Promise,是不是有點無恥?
我整理了一張圖,更直觀一些。

* 紅色代表Promise,是使用最多的,無論async還是generator都可用
* 藍色是Generator,過度貨
* 綠色是Async函數,趨勢
**結論**:Promise是必須會的,那你為什么不順勢而為呢?
**推薦**:使用Async函數 + Promise組合,如下圖所示。

**實踐**
合理的結合Promise和Async函數是可以非常高效的,但也要因場景而異
* Promise更容易做promisefyAll(比如使用bluebird)
* Async函數無法批量操作
那么,在常見的Web應用里,我們總結的實踐是,dao層使用Promise比較好,而service層,使用Async/Await更好。
dao層使用Promise:
* crud
* 單一模型的方法多
* 庫自身支持Promise
這種用promisefyAll基本幾行代碼就夠了,一般單一模型的操作,不會特別復雜,應變的需求基本不大。
而service層一般是多個Model組合操作,多模型操作就可以拆分成多個小的操作,然后使用Await來組合,看起來會更加清晰,另外對需求應變也是非常容易的。
- 前言
- 1 skill
- 1.1 Coding WebIDE
- 1.2 git
- 1.3 extra practice
- 1.4 預習
- 2 nodejs入門
- 2.1 入門
- 2.2 安裝
- 2.3 helloworld
- 2.4 commonJS規范
- 2.5 模塊導出
- 2.6 Nodejs代碼調試
- 2.7 編寫Nodejs模塊
- 2.8 最小化問題
- 2.9 隨堂練習
- 3 異步流程控制
- 3.1 什么時候會用到異步流程控制
- 3.2 簡單做法async模塊
- 3.3 Promise/a+規范
- 3.4 Node.js Promise/a+實現
- 3.5 生成器Generators/yield
- 3.6 Async函數/Await
- 3.7 神奇的co
- 3.8 5種 yieldable
- 3.9 學習重點
- 3.10 隨堂練習
- 4 express和微信開發入門
- 4.1 入門
- 4.2 connect
- 4.3 靜態Http服務器
- 4.4 那些預處理器
- 4.5 路由
- 4.6 視圖與模塊引擎
- 4.7 中間件
- 4.8 更多實踐
- 4.9 微信入門
- 4.10 隨堂練習:完成登錄、注冊功能
- 5 微信實例與H5實踐
- 5.1 微信基礎和sandbox
- 5.2 公眾號菜單和自動回復
- 5.3 微信OAuth用戶授權
- 5.4 微信分享
- 5.5 wechat-api
- 5.6 H5-上篇
- 5.7 H5-下篇
- 5.8 隨堂練習
- 6 weui實戰
- 6.1 使用bower
- 6.2 移動端抽象
- 6.3 優化滑動列表
- 6.4 weui
- 6.5 讓weui和iscroll結婚
- 6.6 優化事件
- 6.7 how-to-write-h5
- 6.8 優化無止境
- 6.9 隨堂練習
- 7 微信支付
- 7.1 吹個牛
- 7.2 支付概述
- 7.3 科普幾個概念
- 7.4 準備
- 7.5 調試
- 7.6 公眾號支付(JSAPI)
- 7.7 對賬單
- 7.8 數據處理
- 7.9 隨堂練習
- 8 項目實戰《付費課程系統MVP》
- 8.1 需求分析
- 8.2 ui/ue
- 8.3 技術棧
- 8.4 模型
- 8.5 靜態api
- 8.6 開發
- 8.7 部署
- 8.8 監控
- 8.9 數據統計
- 8.10 demo
- 9 高級篇
- 9.1 前后端分離實踐?
- 9.2 如何展望未來的大前端
- 9.3 容器和微服務
- 10 答疑問題收集