Promise 方法
Promise
是用來解決 AJAX 非同步問題,優化非同步程式的 ES6 語法,會回傳「接受」或「拒絕」的結果。
AJAX 是 JavaScript 與 XML 技術的縮寫,網頁不用重新整理,就能即時透過瀏覽器跟伺服器溝通、撈取資料。
1 | function promise(num) { |
以下整理一些 Promise 方法:
Promise.resolve 和 Promise.reject
Promise.resolve
和 Promise.reject
都是直接定義 Promise
物件已完成的狀態,會產生一個新的 Promise
物件。
1 | const result = Promise.resolve('result') |
Promise.race
Promise.race
會透過陣列執行多個 Promise
,但僅會回傳第一個結果,無論結果為成功或失敗。
Promise.all
Promise.all
會透過陣列傳入多個 Promise
函式,在「全部執行完後」回傳陣列局果,並且順序與一開始傳入一致,適合「多支API一起執行」,確保全部完成後才進行其他工作。
1 | Promise.all([promise(1), promise(2), promise(3)]) |
Fetch
Fetch
會使用 ES6 的 Promise 作回應(then、catch),回傳的資料為 ReadableStream
物件,需要使用不同資料類型的應對方法,才能正確取得資料。
ReadableStream
的資料類型有:text()
、json()
、formData()
、blob()
、arrayBuffer()
1 | const url = 'https://raw.githubusercontent.com/hexschool/hexschoolNewbieJS/master/data.json' |