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'})
補足
エラー発生するとき、まだ実行されていない関数はスキップするべき。