29. async helper - `sequence()`を実装する

JavaScript

少し工夫が必要  - 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使わなくても解けますか?

常にもっといい方法を求めよう。