Я новичок в Combine и хотел бы получить, казалось бы, простую вещь. Скажем, у меня есть набор целых чисел, например:
let myCollection = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Я хочу публиковать каждый элемент с задержкой, например, 0,5 секунды.
print 0
wait for 0.5secs
print 1
wait for 0.5secs
and so forth
Я могу легко получить издателя последовательности и распечатать элементы следующим образом:
let publisherCanc = myCollection.publisher.sink { value in
print(value)
}
Но в этом случае все значения печатаются сразу. Как я могу распечатать значения с задержкой? В Combine есть модификатор .delay
, но он не для того, что мне нужно (действительно, .delay
задерживает весь поток, а не отдельные элементы). Если я попробую:
let publisherCanc = myCollection.publisher.delay(for: .seconds(0.5), scheduler: RunLoop.main).sink { value in
print(value)
}
Все, что я получаю, это просто "начальная" задержка, после чего элементы сразу печатаются.
Спасибо за вашу помощь.