protypeMethodのthen()について

  • then()はPromiseを返す。
  • Promiseを返すからメソッドチェーンができる

Promise

  • 非同期処理の最終的な完了もしくは失敗を表すオブジェクト
  • 非同期処理の最終的な完了or失敗の処理、その結果の値のこと
  • Promiseは処理が成功すればresolveを返し、失敗ならrejectを返す
  • Promiseを使うと、ネストを深くせずに非同期処理のコールバック関数が書ける
js
new Promise(function(resolve, reject) { resolve('成功'); }); new Promise(function(resolve, reject) { reject('失敗'); });

Promise チェーン

  • 複数の日道理処理を順番に実行して、前の処理が完了してからその結果を次の処理で使う
  • チェインを使うことで、複数の処理を連続して処理できるようになる

非同期処理

  • ある処理が実行されてから終わるまで待たずに、次に控えている別の処理を行うこと

then()の例

js
const promise1 = new Promise((resolve, reject) => { resolve('Success!'); }); promise1.then((value) => { console.log(value); // expected output: "Success!" });

all()を用いた例

  • allはすべての非同期処理が完了した時点で、resolveを返す
js
Promise.all(iterable).then(function(message) { // 結果を表示する処理 }

chatchを用いたエラーハンドリング

  • catchを使い、エラーが発生した時点でエラーを返すようにできる
js
function getNumber(num) { return new Promise(function(resolve, reject) { if (num >= 3) { setTimeout(function() { resolve(num); }, 500); } else { reject("Falied!"); } }); } // 今回は3を渡しているので、resolveから3が返ってくる getNumber(3).then(function(result) { console.log(result); return result + 3; }).then(function(result) { // 2つ目の処理でエラーを発生させる throw new Error('エラー!失敗しました'); console.log(result); return result + 3; }).then(function(result) { console.log(result); // catchを使うことで、エラーが発生した時点でエラーメッセージを返す }).catch(function(e) { console.log('error: ', e); });