1

Bacon.noMoreサブスクライバーに戻ってサブスクライブを解除できるため、これは問題ではない BaconJS から移動しています。Kefir では、サブスクライブ解除はより定型的なものなので、自然な質問は --- ストリームが終了した場合、リスナー (別名コールバック) のサブスクライブを解除する必要がありますか、それとも Kefir はそれを自動的に処理しますか?

const oneTimeStream = Kefir.constant('foo') // this ends after firing foo
const listener = function() { //... }

oneTimeStream.onValue(listener)
// do I need to unsubscribe #listener?
4

1 に答える 1

1

ライブラリの作者によると、答えは「いいえ」です: https://github.com/rpominov/kefir/issues/182

ええ、あなたはする必要はありません。すべてのリスナーは最後に自動的に削除されます。また、終了したストリームを購読すると、それはヌープになります。

ところで、そのため、多くの場合、take/takeWhile/takeUntilBy/etc でストリームを制限することにより、手動での購読解除を回避できます。

stream.take(1).onValue(fn)
于 2016-01-26T04:26:23.540 に答える