54. Thunk平坦化

簡単  - accepted / - tried

以下のCallbackがあるとする

type Callback = 
  (error: Error, result: any | Thunk) => void

Thunkとは、Callbackを引数にする関数。

type Thunk = (callback: Callback) => void

例えこのような三つのthunk

const func1 = (cb) => {
  setTimeout(() => cb(null, 'ok'), 10)
}

const func2 = (cb) => {
  setTimeout(() => cb(null, func1), 10)
}

const func3 = (cb) => {
  setTimeout(() => cb(null, func2), 10)
}

上記のコードでは、三つのthunkは連結されているように見える、func3 → func2 → func1。けどまだ「のり」がなくて動かない。

flattenThunk()を「のり」に作ってください!

flattenThunk(func3)((error, data) => {
   console.log(data) // 'ok'
})

補足

エラー発生するとき、まだ実行されていない関数はスキップするべき。

バッグフリーで普通なコードは何より。

(47)