私は関数型プログラミングで状態を格納することに頭を抱えようとしています。コールバックチェーンから突然変異を削除するにはどうしたらいいですか?
私は突然変異と副作用の両方を持つ関数を書いた。いくつかのカプセル化が含まれています。関数型プログラミングでこの同じ機能をどのように表現できますか?
const createCallbackChain =() => {
let callbacks = []
const addCallback = callback => (
callbacks
.push(callback)
)
const triggerCallbacks = data => (
callbacks
.forEach(callback => callback(data))
)
return (
Object.freeze({
addCallback,
triggerCallbacks,
})
)
}
const callbackChain = createCallbackChain()
callbackChain.addCallback(() => console.log('Hello'))
callbackChain.addCallback(() => console.log('World!'))
callbackChain.triggerCallbacks()
私の目標は、別々の時間にaddCallback
を呼び出し、私が欲しいと何回もすべてのコールバックをトリガすることができることです。 removeCallback
の必要はなく、trigger
が発生した後にコールバックを追加する必要はありません。
貧しい人の約束または観察可能なように見えます。 – Bergi
副作用のないコールバックは、 'triggerCallback'に結果値を返させて、何らかの方法でそれを使用させない限り、むしろ無駄です。 – Bergi
私はObservable create関数を捕捉しようとしていて、一致するExpressルートコールバックが呼び出されたときに 'observer.next'を呼び出しています。私はミドルウェアモジュールから直接 'triggerCallbacks'関数をエクスポートしています。 – Sawtaytoes