Promise 已經被ES6及新的瀏覽器支援,是一個強大的異步執行流程語法結構
Promise 可以讓我們確保某件事情做完之後,才進行後續動作
本質上都是使用callback(回呼函式),並且都是async(異步執行)
當我們實際執行一個 promise,他會先將狀態切換為 pending(等待中),並且依照 resolve 或reject 來返回結果
then..catch 連鎖處理
我們可以透過 Promise 來進行 then..catch 連續的連鎖流程處理
Promise.all 方法
promise.all 可以用陣列的方式一次帶入多個promise,
執行到最後會再回傳一個 Promise 物件
有幾點特色:
- 一項被reject或發生錯誤,就會返回 reject
- 全部執行都完成 resolve ,才會返回成功resolve
- 返回的resolve promise順序會跟傳入陣列中的順序一致
promise.race 方法
promise.race 同樣可用陣列的方式一次帶入多個promise,
只要有任何一個值完成,無論是resolve, reject 還是錯誤,都會返回結果
如果傳入的 promise 同時完成,只會返回排陣列在第一位置的 promise 值