Почему возвращение из flattenMap пустым не вызывает подписку Completed

Я преобразую любое новое значение из сигнала с flattenMap, и я хочу остановить процесс на основе некоторого условия, не с ошибкой, а с завершенным состоянием. Упомянутый ниже код не позволяет это сделать. Это просто фильтрует некоторое значение. Как я могу завершить из flattenMap?

RACSignal* anySignal = //
[ [ anySignal
 flattenMap: ^(id _)
 {
    return [ RACSignal empty ];
 } ]
subscribeCompleted:
^{
   NSLog(@"Not Called");
}];

1 ответ

Решение

-flattenMap: не завершается, пока не завершены все соответствующие сигналы, то есть сигнал, который -flattenMap: вызывается, а также сигналы, возвращаемые из блока карты. Чтобы завершить сигнал, проверьте -takeUntilBlock: а также -takeWhileBlock:,

Другие вопросы по тегам