## 前言
* 前端開發中最重要的便是api調用,從服務端拉取數據進行業務操作,完畢之后提交數據至服務端
* 這個流程幾乎涵蓋了整個系統
* 下面我們來學習下標準的api調用應該如何編寫
* 同時看下如何和我們的自定義組件結合起來
## 定義一個api
1. 我們到services文件夾下創建demo.js,內容如下

2. 工程封裝了`request`方法,將常用的方法都封裝好,方便大家直接調用
## 調用api
1. 我們準備讓這個方法在頁面初次加載的時候調用,并把獲取到的數據打印出來
2. 進入我們編寫的Demo頁面,編寫一個測試方法,`componentWillMount`代表頁面將要加載的時候執行自定義方法

3. 刷新頁面查看控制臺,發現定義成功

4. 下面我們增加api的調用,傳入自定義的數據,并將其返回打印出來

5. 打開系統查看控制臺打印,發現打印成功

## 使用同步調用api
很多業務場景,經常會有同時幾個接口調用共同依賴的場景,若超過3個的話,都寫在.then方法里進行操作,代碼會變得非常不優雅,耦合度也高。下面我們來嘗試下使用同步操作代碼
1. demo增加mock接口test

2. 對應service增加接口定義

3. 更改代碼,單獨抽離出一個方法init,用于同步代碼的操作。同時將init的返回類型打印出來

4. 打開系統查看控制臺打印,可以看到兩條信息都打印成功,而且是按順序加載。這樣解耦了多個接口下都操作,代碼看起來更清爽,可讀性更高。

5. 可以看到,返回都是一個Promise對象,具體介紹,請看:https://www.imooc.com/article/20580
6. 還有一點需要注意的是,如果需要用到promise,那么方法前必須帶有`async`關鍵字,否則將失效