我只想听一次。这是有效的JavaScript吗?
const unsubscribe = obj.onFoo(x => {
unsubscribe()
// do things
})
最佳答案
是的,这是调用unsubscribe()
的一种完全有效的方法。
即使在构造函数之后才将函数分配给unsubscribe
变量,直到调用回调函数后,函数才运行。调用回调时,它将查找unsubscribe
标识符并在封闭范围内找到它。标识符解析为取消订阅功能,因此unsubscribe()
如您所愿被调用。
这是一个相当普遍的模式。我脑海中只有一个例子,就是清除AngularJS中的$watch
函数– Unbinding $watch in angularjs after called