0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScriptのPromiseについて

Posted at

こんにちはプログラマー2年目の塚田です。
今回も前回と同じくJavaScriptについてお仕事で触れたものを紹介したいと思います。

はじめに

皆さんはPromiseをご存じでしょうか。
Promiseというのは「非同期処理の結果を表せるオブジェクト」です。
Promiseを使うことで、非同期処理を読みやすく管理しやすくなります。
今回はそのPromiseについて調べながら書いてみました。

3つの状態

まず、非同期処理には3つの状態があります。
・pending(処理待機中) → 処理がまだ終わってない状態
・resolve(処理成功) → 処理が成功して値が返ってきた状態
・reject(処理失敗) → 処理が失敗した状態

上記三つを念頭に置いて以下のコードを書いてみます。

let promise = new Promise((resolve,reject) => {
    resolve("成功!");
    reject("失敗!")
})

上記はpromiseの処理が成功した場合は 成功! を出力し、
失敗した場合は 失敗! を出力するコードです。

then,catch,finally

次にthen,catch,finallyを紹介します。

.then()は処理(promise)の結果を取得します。
.catch()は処理(promise)のエラー処理を記述します。
.finally()は後処理を記述します。

先ほどのコードに追記してみます。

let promise = new Promise((resolve,reject) => {
    resolve("成功!");
    reject("失敗!")
});

/// ここから下が追加する処理

promise
    .then(result => {
        console.log(result); // → 成功!
    })
    .catch(result => {
        console.log(reject); // → 失敗!
    })
    .finally(() => {
        console.log("処理が終了しました!"); // → 処理が終了しました!
    })

処理(promise)が成功(resolve)したときは.then()により
"成功!"が出力されます。

一方、処理(promise)が失敗(reject)したときは.catch()により
"失敗!"が出力されます。

最後に成功失敗関係なく、.finally()により"処理が終了しました!"を出力します。

以上がPromiseの使い方となります。

Promiseのチェーン

ここからはお仕事では使いませんでしたが、変わった書き方があったので紹介します。
上で使用した.then()を繋げることで非同期処理を順番に実行できます。

let promise = new Promise((resolve,reject) => {
    resolve(1);
});

promise
    .then(result => {
        console.log(result); // → 1
        return result + 1
    })
    .then(result => {
        console.log(result) // → 2
        return result + 2
    })
    .then(result => {
        console.log(result) // → 4
    });

以上です。

終わりに

Promiseを活用すれば非同期処理も見やすくわかりやすいコードが書けそうですね。
今後非同期処理を触る機会があったらこのPromiseを活用してみようと思います。
以上、塚田でした。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?