나는 기능적 프로그래밍으로 상태를 저장하는 것에 대해 고민하고있다.어떻게 콜백 체인에서 돌연변이를 제거 할 수 있습니까?
돌연변이와 부작용이 둘 다있는 함수를 작성했습니다. 일부 캡슐화가 포함됩니다. 함수 프로그래밍을 사용하여 이와 동일한 기능을 어떻게 표현할 수 있습니까?
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 route 콜백이 호출되면 'observer.next'를 호출하려고합니다. 내 미들웨어 모듈에서 직접'triggerCallbacks' 함수를 내보내고 있습니다. – Sawtaytoes