學習ES-6Promise物件
首先了解一下什麼是Promise:
Promise簡單來說就是個替代回撥函式執行的東東,作為非同步操作的處理方法之一。
(回撥函式是指在作為物件傳入主函式,在在主函式處理完之後執行的函式)
那麼為什麼要用這個呢?
日常經常有那種執行完一個函式繼續執行下一個函式的需求,例如最簡單的每秒輸出數字1.2.3....,這樣會形成巢狀,就像套娃娃一樣,一個大的裡面有一個小的,處理起來很麻煩。
舉個小栗子:

所以我們要進行處理操作,一般promise有三種狀態: pending(等待態),fulfiled(成功態),rejected(失敗態);
常見寫法為:
let p = new Promise(resolve, reject){}.then();
例子:
原來的寫法

按照Promise的寫法

Promise的建構函式接收一個引數,是函式,並且傳入兩個引數:resolve,reject,分別表示非同步操作執行成功後的回撥函式和非同步操作執行失敗後的回撥函式.
按照標準來講,其實resolve是將Promise的狀態置為fullfiled,reject是將Promise的狀態置為rejected,promise的常用用法.
注意:在then方法中的function 呼叫的next方法,一定要用return ,否則不會通過resolve把資料往下傳遞( 通俗點講就是下一個非同步操作,接收不到上一步的結果 ).
then能接受兩個引數,由reject傳資料給第二函式;

和then不同 catch 是用於接受錯誤資訊的(reject)(推薦用這種)

resolve所給的值由then接受,reject的值由catch接受。
Promise.all 與 Promise.race
這兩者有何不同呢,一個是在全部非同步載入完之後顯示全部,一個是執行完最快的那個立馬顯示
例如:

瀏覽器上顯示:

race:

瀏覽器上顯示:
