非同期処理をいい感じに使えるAPIパターン

reference

let promise = new Promise(function(resolve, reject){
  let err = something();
  if (err) {
    reject(err); // errorのときはrejectを呼ぶ
    return;
  }
  resolve(data); // 正常なときはresolveを呼ぶ
});

// thenに正常なときの動作を書く
// catchにエラーのときの動作を書く
promise
  .then((data) => {
    console.log('success');
  }
  .catch((err) => {
    console.log('error');
  });

メソッドチェーン
Promiseをつなぐことで非同期処理をつなげられる

promise
  .then((data) => {
    console.log('success');
    return new Promise((resolve, reject) => {
      resolve();
    });
  }
  .then(() => {
    // ...
  })
  .catch((err) => {
    console.log('error');
  });