我們在做線上相簿需要向資料庫要資料,以往的做法會使用XMLHttpRequest
,或者jQuery 的.ajax()
功能,在ES6中新增了一個原生的 object 叫 Promise
來處理 JSON API 及 AJAX 的工作。
Promise 有「承諾」的意思,把它想像成你答應別人某件事情,那麼這件事情在承諾當下到無止境的未來之間,一定會發生。(怎麼突然有如詩般的美感XD)
而 Fetch API 是一個新增的原生 web API,它的作用和 XMLHttpRequest
相同,而且更簡單使用。
Fetch API 的值是一個 promise. JavaScript 是非同步,它不會等回傳資料回來,而是會立刻執行後面的程式。Promise 用處在設一個 trigger,不管是成功或失敗,在收到資料後能執行指定的動作。
const promise = fetch(input[, init]);
input
是我們要取得的目標init
是一些設定選項,如 method, headers, body 等等。
promise
.then(response => response.json())
.then(data => {
console.log(data);
});
Promise 在收到回傳資料後可以用 .then()
串接功能,首先要做的是把收到的 JSON string 轉換成 JSON object response => response.json();
.
然後這個 JSON 值就以 data 的變數名稱,使用在我們自訂的程式中。