Должен ли я отключать поток с одним значением от Bacon.Bus?

E.g.

var stream = new Bacon.Bus();
for(var i = 0; i < 4; i++) {
  stream.plug(Bacon.later(3000, 'value');
}

Вместо цикла for у меня может быть обратный вызов для некоторых асинхронных вещей + другие значения также вводятся в поток.


person vadirn    schedule 09.11.2015    source источник


Ответы (1)


Нет необходимости отключать поток, пока он заканчивается (в потоке есть событие Bacon.end). Bacon достаточно умен, чтобы обрабатывать конечные потоки без утечек памяти.

Если вы не можете завершить поток естественным образом, но знаете, что вас интересует только одно значение, вы можете создать один поток значений с помощью .take(1).

Использование bus.plug для динамического добавления потоков в шину часто является признаком конструктивного недостатка вашего приложения. Невозможно дать точный совет, не видя вашего кода, но вы должны подумать о реорганизации своего кода, чтобы цепочка потоков создавалась при запуске, а динамическими были только значения. Вероятно, это будет связано с использованием flatMap :)

person OlliM    schedule 09.11.2015