30. async helper - `parallel()`を実装する
シェアしよう
少し工夫が必要 - accepted / - tried
この問題は 29. async helper - sequence()
を実装するの続きです。
async helper - parallel()
を実装してください!
parallel()
はPromise.all()
にちょっと似ている。問題29番にあるsequence()
と違って、async関数の実行に順番はない、最初に一気に全部呼ばれる。
この問題にあるasync functionは全て以下のインタフェースを持つ。
type Callback = (error: Error, data: any) => voidtype AsyncFunc = ( callback: Callback, data: any) => void
parallel()
はAsyncFunc配列を受けて、新しいfunctionを返す。このfunctionは、全てのasync function実行終わる時に、またはエラー発生時に呼ばれる。
例えば3つのasync関数があるとする
const async1 = (callback) => { callback(undefined, 1)}const async2 = (callback) => { callback(undefined, 2)}const async3 = (callback) => { callback(undefined, 3)}
parallel()
を使うと
const all = parallel( [ async1, async2, async3 ])all((error, data) => { console.log(data) // [1, 2, 3]}, 1)
エラー発生時、最初のエラーだけ最後に渡される、残りのエラーとデータは全部スルーされる。