【发布时间】:2016-05-20 04:33:57
【问题描述】:
我正在观看 Dan Abramov 关于 Egghead 的 Redux 教程,他做了一些让我有些困惑的事情。作为一项学习练习,他让观众重建createStore 抽象。 createStore 提供的一种方法是 subscribe,它添加了侦听器以侦听存储更改。
然后他说:
这里有一个重要的缺失部分。我们还没有提供取消订阅侦听器的方法。我们不会添加专用的 Unsubscribe 方法,而是从 Subscribe 方法返回一个函数,该函数会从侦听器的数组中删除此侦听器。
所以他用来添加/删除监听器的代码是:
const subscribe = (listener) => {
listeners.push(listener);
return () => {
listeners = listeners.filter(l => l !== listener);
};
};
我有点理解,这允许您使用一个函数来添加/删除,这是可能的,因为如果您将已订阅的侦听器的名称传递给 subscribe 方法,过滤器将删除它,我不明白为什么这会返回一个箭头函数而不是一个侦听器数组。这个返回的函数将如何/何时被调用?
【问题讨论】:
标签: javascript ecmascript-6 redux