Promise

Promise とは

JavaScript における Promise とは何か? コールバック地獄から抜け出すために ES2015 で実装されたオブジェクト。 Promise を使うと非同期処理がオブジェクトインターフェイスにてすっきり書くことができる...らしい

なぜ「らしい」のか? 購入した書籍を数回読み返したがわからん!

Promise を使ってサイコロを振った結果を表示してみました。

const diceChoice = () => {
  return Math.floor(Math.random() * 10 + 1);
};

function dummyDice() {
  return new Promise((resolve, reject) => {
    const dice = diceChoice();
    dice % 2 === 0 ? resolve(dice) : reject(new Error(`Odd: ${dice}`));
  });
}

// 以下の行をコメントアウトすると
// Promise { 2 } のような結果が確認できる
// これがPromiseオブジェクトのようです
// console.log(dummyDice());

// 偶数の場合は、Promiseオブジェクトではなく
// 数値を表示させる
function showDice() {
  dummyDice()
    .then((value) => {
      console.log(value);
    })
    .catch((err) => {
      // 以下をコメントアウトすると
      // スタックトレースが表示される
      // console.log(err);
      console.log(err.message);
    });
}

showDice();

実行すると

$ node dice.js 
4
$ node dice.js 
Odd: 1