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