protypeMethodのthen()について
then()
はPromiseを返す。
- Promiseを返すからメソッドチェーンができる
Promise
- 非同期処理の最終的な完了もしくは失敗を表すオブジェクト
- 非同期処理の最終的な完了or失敗の処理、その結果の値のこと
- Promiseは処理が成功すればresolveを返し、失敗ならrejectを返す
- Promiseを使うと、ネストを深くせずに非同期処理のコールバック関数が書ける
jsnew Promise(function(resolve, reject) {
resolve('成功');
});
new Promise(function(resolve, reject) {
reject('失敗');
});
Promise チェーン
- 複数の日道理処理を順番に実行して、前の処理が完了してからその結果を次の処理で使う
- チェインを使うことで、複数の処理を連続して処理できるようになる
非同期処理
- ある処理が実行されてから終わるまで待たずに、次に控えている別の処理を行うこと
then()の例
jsconst promise1 = new Promise((resolve, reject) => {
resolve('Success!');
});
promise1.then((value) => {
console.log(value);
// expected output: "Success!"
});
all()を用いた例
- allはすべての非同期処理が完了した時点で、resolveを返す
jsPromise.all(iterable).then(function(message) {
// 結果を表示する処理
}
chatchを用いたエラーハンドリング
- catchを使い、エラーが発生した時点でエラーを返すようにできる
jsfunction 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);
});