とあるWeb屋の備忘録

とあるWeb屋の備忘録。たまに雑記。

Promise基礎

仕事でNode.jsを使うことになって非同期処理でPromiseやasync/awaitをよく使うので今回はPromiseについてまとめました。
async/awaitについては別の機会にまとめようと思います。


Promiseの特徴は4つあります。

  • Promiseオブジェクトは3つの状態を持っている(Pending, fulfilled, rejected)
  • 状態は変化する(Pending -> fulfilled or rejected)
  • Promiseの状態によってその後の処理が変化する
  • then()で処理をチェーンできる(callback地獄にならない)

Promiseの使い方

  • return new Promise((resolve, reject) => {do something})でPromiseオブジェクトを作ってreturnさせる関数を用意する(作ったときは状態はPending)
  • その関数を呼び出して状態変化させたPromiseオブジェクトを次の処理に渡す
  • 次の処理ではPromiseオブジェクトの状態によって処理が分岐する(以下のソースではconsole.log(result)orconsole.log(error)

※Promiseの使い方補足
Promiseオブジェクトはresolveの処理が行われるとfulfilledになる
Promiseオブジェクトはrejectの処理が行われるとrejectedになる
以下のソースのpmFnc(true)が呼ばれるとPromiseオブジェクトはresolveを実行してfulfilledになる
Promise(pmFnc(true))の結果はコールバック関数の引数(.then(result => ...)で受け取れる(resultのこと)

function pmFnc(result) {
  return new Promise ((resolve, reject) => {

    if(result) resolve('success!')
    reject('failure...')
  })
}

pmFnc(true)
.then(result => {
  console.log(result)
})
.catch( error => {
  console.log(error)
})

console.log('1st comment')

結果は以下

1st comment
success!


簡単にですがPromiseについてまとめました!
次はasync/awaitについてまとめたいと思います。

読んでいただいてありがとうございました!!