我写了一个简单的软件,当设置状态时,该软件允许用户“注册”功能。通过向数组添加函数可以轻松实现这一点。我想返回一个能够“取消注册”该特定功能的功能。请注意,用户可能两次注册相同的功能。这意味着“取消注册”功能不能基于作为键的功能。
唯一想到的是使“ register”函数的方式更加复杂,其中“ callbacks”数组中的每个项目不仅是一个函数,而且是这样的对象:
{ id: someId fn: [the function] }
并且取消注册功能将过滤someId值。但是我就是不喜欢这样。
想法?
const state = {}
const callbacks = []
const register = (fn) => {
callbacks.push(fn)
return () => {
console.log('Unregister function. HELP!!! How do I do this?')
}
}
const setState = async (key, value) => {
state[key] = value
for (const fn of callbacks) fn(key, value)
}
const getState = (key) => {
return state[key]
}
const f1 = () => {
console.log('f1')
}
const f2 = () => {
console.log('f2')
}
const unregF1a = register(f1)
const unrefF1b = register(f1)
const unregF2 = register(f2)
setState('some', 'a')
unregF1a()
setState('some', 'b')
我写了一个简单的软件,当设置状态时,该软件允许用户“注册”功能。通过向数组添加函数可以轻松实现这一点。我想返回一个能够...
循环遍历您的回调并删除所需的功能(如果同一功能被注册两次,则可以使用)。您可以做一个简单的for循环: