Нужно ли отписывать слушателя в поток, который заканчивается на кефире?

Я переезжаю из BaconJS, где это не проблема, потому что вы можете просто вернуться Bacon.noMore в подписчике отписаться. В Кефире отмена подписки является более шаблонным, и поэтому естественный вопрос - для потоков, которые заканчиваются, вам нужно отписаться от прослушивателя (или обратного вызова), или Kefir обрабатывает это для вас автоматически?

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

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

1 ответ

Решение

По словам автора библиотеки, ответ "Нет": https://github.com/rpominov/kefir/issues/182

Да, тебе не нужно. Все слушатели автоматически удаляются подряд. Кроме того, когда вы подписываетесь на законченный поток, это просто тупик.

Кстати, из-за этого вы часто можете избежать ручной отписки, ограничивая поток с помощью take/takeWhile/takeUntilBy/etc.

stream.take(1).onValue(fn)
Другие вопросы по тегам