【发布时间】:2018-10-31 22:08:41
【问题描述】:
我有一个 RxJS Observable 需要在特定时间重新计算,如 DateTime 对象数组所述(尽管出于此问题的目的,它们可能是 JavaScript Date 对象、纪元毫秒或其他任何东西代表一个特定的时刻):
const changeTimes = [
// yyyy, mm, dd, hh, mm
DateTime.utc( 2018, 10, 31, 21, 45 ),
DateTime.utc( 2018, 10, 31, 21, 50 ),
DateTime.utc( 2018, 10, 31, 22, 00 ),
DateTime.utc( 2018, 10, 31, 23, 00 ),
DateTime.utc( 2018, 10, 31, 23, 30 ),
];
我很难理解如何创建一个在这样一个数组中指定的时间发射的 Observable。
这是我在尝试回答我自己的问题时的想法:
- 我几乎肯定需要使用the
delayoperator,其中指定的延迟是“现在”和下一个未来日期时间之间的时间。 - 我需要确保“现在”在订阅时是最新的,而不是在创建 Observable 时——可能使用the
deferoperator——尽管我不想不必要地创建多个 Observable 实例,如果有的话多个订阅。 - 我不确定随着时间的推移如何迭代数组—the
expandoperator 可能是我需要的,但它调用了一些东西递归,我只是想迭代一个列表. -
The
timeroperator 似乎无关紧要,因为每个日期时间之间的持续时间不同。 - 我可以将每个日期时间映射到它自己的延迟 Observable 并通过
merge将它们全部返回,但是随着数组中日期时间数量的增加(可能有数百个),这变得非常低效,所以这绝对是最后的手段.
如何制作一个 RxJS Observable,它接受一个日期时间列表,然后在每个时间到达时发出,在最后一个完成?
【问题讨论】:
标签: javascript rxjs