我只想听一次。这是有效的JavaScript吗?

  const unsubscribe = obj.onFoo(x => {
    unsubscribe()
    // do things
  })

最佳答案

是的,这是调用unsubscribe()的一种完全有效的方法。

即使在构造函数之后才将函数分配给unsubscribe变量,直到调用回调函数后,函数才运行。调用回调时,它将查找unsubscribe标识符并在封闭范围内找到它。标识符解析为取消订阅功能,因此unsubscribe()如您所愿被调用。

这是一个相当普遍的模式。我脑海中只有一个例子,就是清除AngularJS中的$watch函数– Unbinding $watch in angularjs after called

10-07 21:47