S
Давно наблюдаю такую имплементацию в софте Telegram и хотелось бы понять некоторые вещи.
У них есть крутой пайп оператор (который хвалит @renren_san ), разобрался с
deliverOnMainQueue
код, а так же почитал теорию о Rx чутка и разобрался с take(count:)
кодПришел я из
async - await
языка и меня интересует, можно ли из такого Сигнала получить значение "прямо сейчас", то есть эвэйтнуть его?)Условно:
let signal : <Signal, NoError> = ...
(signal
|> take(1)
|> deliverOnMainQueue).start(next: { value in
print("MY VALUE", value)
})
print("END")
Естественно выводится
END
MY VALUE ...
В таком случае пользоваться семафорами, без выполнения на главной очереди?
let semaphore = DispatchSemaphore(value: 0)
print("MY VALUE")
semaphore.signal()
semaphore.wait()
Есть ли варианты красивее, лучше, или сама идея блочить тред уже смешно?)