мне нужно создать бот, который твиты со случайными интервалами, как это:Наблюдаемого что задерживает случайное время каждый раз, когда поток заканчивается
wait 1 hour
tweets something
wait 5 hours
tweets something
wait 30 minutes
tweets something
wait 10 hours
tweets something
, где время задержки между 10 часов или что-то вроде этого
Проблема с наблюдаемыми заключается в том, что мне нужно сгенерировать эти интервалы, а затем подавать их в цепочку наблюдаемых. Например, мне нужно создать массив со всеми задержками, и только они подписываются на него, чтобы чирикать.
Нет ли способа создать наблюдаемое, которое испускает новый элемент, только когда он закончится? Например:
Rx.Observable.just().timer(randomTime()).subscribe(emitObservableAgain());
Я думаю, что это как-то не то, что предназначены Наблюдатели. Как ... это хорошая оценка, чтобы связать конец цепочки наблюдаемых с самим собой?
ТАКЖЕ, как импортировать rx.timer в nodejs? Импорт только «гх» (от НПМ) не даст мне этим функциям
почему switchMap? Это сработало, но я хотел знать, как именно это работает. Я могу только думать о repeat() как возврате нового Observable, но сразу же испускаю последний, чтобы подписка могла его поймать. Это так? – Gatonito
Я попытался понять это больше, вот он: switchMap похож на flatMap, но он сразу же переключает поток при вызове. Итак, вы ничего не выбрали, переключившись на Наблюдаемый, который испускает случайное время, сделал этот наблюдаемый триггер (tweetMyThing). Я просто не совсем понял повторение(). Как я понял, он возвращает поток, который повторяет (по умолчанию, по-моему,) последний поток. Я просто не понимаю, почему он все повторяет и выполняет randomTime(). Зачем? Для меня repeat() просто переизлучил бы более старый поток со временем, когда он был впервые задуман. – Gatonito
Повтор повторяется навсегда по умолчанию и будет повторять весь поток, включая настройку новой случайной задержки - вы проверили это? - И switchMap и flatMap можно использовать одинаково в этом случае: Но когда есть сомнения: используйте switchMap – olsn