なんだかGoodVibes

日々の勉強メモです。

【Node】Promiseの入門

こんにちは。
本日は、非同期処理に使用する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



以上です。