29. async helper - `sequence()`を実装する
シェアしよう
少し工夫が必要 - accepted / - tried
この問題は11. Compositionとは?pipe()を実装するとちょっと似ている。
async helper - sequence()
を実装してください。pipe()
みたいにasync関数を一つにする。
この問題にあるasync functionは全て以下のインタフェースを持つ。
type Callback = (error: Error, data: any) => voidtype AsyncFunc = ( callback: Callback, data: any) => void
sequence()
は、AsyncFunc 配列を受け取って、callbackを通じて一つにする。
例えばこういうasync function - 掛ける2
const asyncTimes2 = (callback, num) => { setTimeout(() => callback(null, num * 2), 100)}
sequence()
で 以下の掛ける4を作ることができる。
const asyncTimes4 = sequence( [ asyncTimes2, asyncTimes2 ])asyncTimes4((error, data) => { console.log(data) // 4}, 1)
エラーが発生する時、残りの未実行の関数を飛ばし、最後のcallbackを実行するべきです。
フォローアップ
Promiseを使っても、Promise使わなくても解けますか?