// 1
async function case1() {
try{
await asyncAction1()
await asyncAction2()
await asyncAction3()
} catch (err) {
console.error(err)
}
}
// 2
function case2() {
return chain([
asyncAction1,
asyncAction2,
asyncAction3,
]).catch(console.error)
}
function chain(afns) {
return afns.reduce((a, b) => a.then(b), Promise.resolve())
}
// 3
function case3() {
return Promise.resolve()
.then(asyncAction1)
.then(asyncAction2)
.then(asyncAction3)
.catch(console.error)
}
1 は async/await な方法
各処理の間に何かやりたいときにやりやすい
動的に実行関数変えるなら配列にして for-of で回すだけ
2 は Promise をチェーンさせる関数を使ったもの
関数作る必要あるけど chain は汎用的なものだし 1 回つくれば使い回せるからそこまで気にならない
関数の配列渡すだけなのでシンプル
3 は自分でチェーンさせたもの
2 よりこれのほうが見やすいかもだけど 動的に項目変わると対応しづらい
配列だけ作って渡せばいい 2 のほうが扱いやすい