Promiseでresolve/rejectしたら、そこで処理が中断されて、then/catchに飛ぶと思ってたが、どうやら違うようだ。
resolve/rejectでは、処理の中段は発生しない。
new Promise((resolve, reject) => {
console.log('start')
resolve()
console.log('end')
})
.then(() => console.log('then'))
.catch(() => console.log('catch'))こういうコード書いたときに、出力結果は、
// こうなる想定で上のコードを書いてる
start
then
// でも実際はこう
start
end
thenreject()でcatchに飛ぶ場合でも同様の挙動をとる。
それでも、resolve/rejectで処理を中断して、 then/catchに飛んで欲しい
resolve/rejectするときに、returnすればいいだけだった。
new Promise((resolve, reject) => {
console.log('start')
return resolve()
console.log('end')
})
.then(() => console.log('then'))
.catch(() => console.log('catch'))start
thenおまけ:resolve/rejectで処理が中断しないなら…
こういうコード書いたら、どうなるんだろ
new Promise((resolve, reject) => {
console.log('start')
resolve()
console.log('naka')
reject()
console.log('end')
})
.then(() => console.log('then'))
.catch(() => console.log('catch'))実際に試してみると、こうなった。
start
naka
end
thenresolve()が実行された時点で、then行きが決まり、そのあとのreject()は無視されるようだ。


