Swift Combine - дождитесь всех издателей - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь использовать Swift объединить, чтобы запустить много задач с одинаковым результатом. на данный момент каждая задача является издателем, который выдаст результат. теперь я сталкиваюсь с проблемой, что я должен ждать, пока все издатели выпустят элемент, а затем продолжат. вроде как диспетчерская группа. Я нашел zip (с: : : _) оператор, который принимает 4 издателя.

https://developer.apple.com/documentation/combine/passthroughsubject/3333571-zip

, но Что делать, если у вас есть массив издателей (в случае, если они испускают один и тот же элемент)? есть ли способ сделать это?

1 Ответ

6 голосов
/ 06 января 2020

Вы можете использовать MergeMany для создания одного нисходящего потока, получающего все испущенные значения от нескольких восходящих потоков, а затем вызвать collect() на объединенном издателе, чтобы испустить все значения сразу.

let pubs = [Just(1),Just(2),Just(3)]
let downstream = Publishers.MergeMany(pubs).collect()
...