我試圖圍繞函數式編程來存儲狀態。如何從回調鏈中刪除突變?
我寫了一個兼有突變和副作用的函數;雖然,確實包括一些封裝。我如何用函數式編程來表示這個相同的功能?
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