孤独プログラマー譚

孤独死が近い。

JavaScript Promise.thenメソッドの返却値

asyncメソッドと似たような考え方でいいと思う。

const promise = new Promise(resolve => resolve())

const foo = promise.then(async () => {
  await new Promise(resolve => {
    setTimeout(resolve, 1000)
  })
  return 'foo_value'
})

const bar = promise.then(() => {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('bar_value')
    }, 2000)
  })
})

foo.then((res) => console.log(res)) // 1秒後にfoo_value
bar.then((res) => console.log(res)) // 2秒後にbar_value

Promiseオブジェクトをreturnすると、そのままそのPromiseオブジェクトがthen()の返却値となる。
Promiseオブジェクト以外をreturnすると、Promiseでラッピングされて返却される。