Promise

#JavaScript

whck6

最早是在社群提出,但 ES6 推出後就被列入標準了,原生提供 Promise 對象,用於處理非同步問題。例如:下載網路上的圖片之後顯示。

基本用法

let promise = new Promise(function (resolve, reject) {
  // ... some code
  if (true) {
    resolve(value);
  } else {
    reject(error);
  }
});

Promise.resolve()

let p = Promise.resolve(arg);

傳入的參數是 thenable 將會執行該對象的 then 然後回傳一個 Promise 狀態為 resolved 的對象;傳入的參數不具有 thenable 將會回傳一個 Promise 狀態為 resolved 的對象。

let p = Promise.resolve("Hello");

p.then(function (s) {
  console.log(s);
});
// Hello

沒有傳入參數將會回傳一個 Promise 狀態為 resolved 的對象。

Promise.reject()

let p = Promise.reject(arg);

大致原理跟 Promise.resolve() 一樣,只是狀態為 rejected.