マンガでわかるJavaScriptのPromise

Xにポスト X@ruten 開発支援 開発/執筆依頼
公開:2024-11-15、更新:2024-11-15

第10話「reject」3 ドキュメント

ドキュメント

コード1

 「then」の第2引数を使って、処理を分岐する例です。

ソースコード)「then」の第2引数で処理を分岐

new Promise(function(resolve, reject) {
    setTimeout(function() {
        reject();
    }, 1000);
})
.then(
    function() {
        console.log('解決');
    },
    function() {
        console.log('拒否');
    }
);

    

出力)実行結果

拒否

    

コード2

 「catch」を使って分岐する例です。

ソースコード)「catch」を使って分岐

new Promise(function(resolve, reject) {
    setTimeout(function() {
        reject();
    }, 1000);
})
.then(function() {
    console.log('解決1');
})
.then(function() {
    console.log('解決2');
})
.catch(function() {
    console.log('キャッチ');
});

    

出力)実行結果

キャッチ

    

コード3

 「then」による分岐と「catch」による分岐を混ぜた例です。

ソースコード)「then」と「catch」を混ぜる

new Promise(function(resolve, reject) {
    setTimeout(function() {
        reject();
    }, 1000);
})
.then(
    function() { console.log('解決1') },
    function() { console.log('拒否1') }
)
.then(
    function() { console.log('解決2') },
    function() { console.log('拒否2') }
)
.catch(function() {
    console.log('キャッチ')
});

    

出力)実行結果

拒否1
解決2

    

コード4

 「reject」で値を送る例です。

ソースコード)「reject」で値を送る

new Promise(function(resolve, reject) {
    setTimeout(function() {
        reject('エラー');
    }, 1000);
})
.then(
    function(arg) {
        console.log('解決', arg);
    },
    function(arg) {
        console.log('拒否', arg);
    }
);

    

出力)実行結果

拒否 エラー

    

コラム:3つの状態

 「Promise」には3つの状態があります。初期状態の「待機」(pending)と、処理が成功して完了した「履行」(fulfilled)、処理が失敗した「拒否」(rejected)です。

 待機状態の「Promise」は、値を持った履行状態か、エラーの理由を持った拒否状態に変わります。

 「Promise」が待機以外の状態になった場合は、「決定」(settled)と呼ばれます。

 これらの状態遷移を知らなくてもプログラムは書けますが、覚えておくとよいです。

コンテンツ紹介

この連載をまとめて 無料の電子書籍で読む PDF+コードをDLする
コンテンツを全て見る

トップページに戻る
Cronus Crown(クロノス・クラウン)のトップページに戻る
(c)2002-2024 Cronus Crown (c)1997-2024 Masakazu Yanai
ご意見・お問い合わせはサイト情報 弊社への連絡までお願いします
個人情報の取り扱い、利用者情報の外部送信について