Чтобы ответить на второй вопрос, вот проблема, которая может извлечь большую пользу из Rx. Это называется «Быстро разбогатеть».
Вы разработали игру с таким же названием, и она довольно хорошо продается. Но это доступно только в ваших магазинах для оптовой продажи. Чтобы упростить обработку наличных, у вас есть конвейер, который направляется к вам.
(Пожалуйста, не стесняйтесь изменить историю выше :))
Продавцы размещают на нем пачки наличных без ярлыков, указывающих количество и тип купюр в пачке. Ваша задача сортировать и считать деньги. Позже, когда вы получите больше денег, вы можете нанять других, чтобы помочь вам.
В этом случае источник является асинхронным источником пачек наличных (производитель). Ваши сотрудники и поставщики ожидают денег, но вы должны потреблять пачки, распаковывать их и использовать свою собственную бизнес-логику, чтобы переупаковывать их соответствующим образом, чтобы платить им.
Продавцы работают по собственной инициативе, поэтому им не нужно ждать, пока вы посчитаете, что они бросают на пояс. Ваше время лучше всего использовать, если вам сообщат, когда будет доступно больше денег для подсчета, до тех пор, пока вы не сможете выполнять другую работу.
Вы можете представлять каждую пачку байтом [].
Это довольно распространенная ситуация в реальном мире; когда вы извлекаете какой-либо ресурс [например, веб-страницы для поисковых систем, изображения или видео] в сети или данные из периферийных устройств, вы получаете их кусками байтов (возможно, с заголовками). В одном потоке или в многопоточной среде, с которой слишком сложно работать, вы склонны объединять и обрабатывать их. Уже нет!!