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でラッピングされて返却される。