こんにちは。
本日は、非同期処理に使用するPromiseの入門です。
概要
Promiseオブジェクトは、非同期処理の結果を表現します。
Promiseは、完了(成功)もしくは破棄(失敗)が保証されています。
Promiseオブジェクトの返却は、以下のように記載します。
return new Promise((resolve, reject) => { // 成功 resolve(); });
return new Promise((resolve, reject) => { // 失敗 reject(); });
さらに、.then()でチェーンさせることができます。
さらに、.catch()をすることで、発生したエラーをキャッチできます。
チェーンの最後などに、記載しておくと
エラー時にも対応できるのでいいかと思います。
サンプルソース
function p1() { return new Promise((resolve, reject) => { setTimeout(() => { resolve('p1 OK'); }, 2000); }); } function p2(t) { console.log(`[p2]: ${t}`); return new Promise((resolve, reject) => { setTimeout(() => { resolve('p2 OK'); }, 2000); }); } function p3(t) { console.log(`[p3]: ${t}`); return new Promise((resolve, reject) => { setTimeout(() => { reject('p3 NG'); }, 2000); }); } p1() .then(value => p2(value)) .then(value => p3(value)) .catch(err => console.log(`[Err]: ${err}`));
結果は以下のようになります。
[p2]: p1 OK [p3]: p2 OK [Err]: p3 NG
以上です。