1
我只想聽一次。這是有效的JavaScript?取消訂閱自己的回調中的封閉變量
const unsubscribe = obj.onFoo(x => {
unsubscribe()
// do things
})
我只想聽一次。這是有效的JavaScript?取消訂閱自己的回調中的封閉變量
const unsubscribe = obj.onFoo(x => {
unsubscribe()
// do things
})
是的,這是一個非常有效的方式叫unsubscribe()
。
即使功能未被分配到unsubscribe
變量直到函數被構造之後,它也不是運行直到調用回調。當回調被調用時,它會查找unsubscribe
標識符,並在的封閉範圍中找到它。標識符解析爲取消訂閱功能,因此會按照您的預期調用unsubscribe()
。
這是一個相當常見的模式。只是我頭頂的一個例子是清除AngularJS中的$watch
函數 - Unbinding $watch in angularjs after called
downvoter可以解釋嗎?這是我第一次使用返回取消訂閱功能的API,這對我來說看起來有點奇怪。它有效,但我不確定它可能會有什麼影響。 – user1164937