gpt4 book ai didi

javascript - Rxjs:你想在什么场景下使用调度器

转载 作者:行者123 更新时间:2023-12-02 06:30:28 24 4
gpt4 key购买 nike

我不明白 rxjs 文档中的调度程序是什么意思,所以我试图通过场景来理解它的用处,所以我可以理解调度程序

最佳答案

&tldr;

在大多数情况下,您永远不需要关心 Scheduler,只要 90% 的情况下默认设置就可以了。

说明

Scheduler 只是在使用 RxJS 时标准化时间的一种方式。它有效地安排在未来某个时间发生的事件。

我们通过使用 schedule 方法将调度程序将来执行的新操作排队。 Scheduler 如何做到这一点完全取决于实现。虽然通常只是选择最有效的方式来执行 future 的行动。

举一个简单的例子,我们使用 timer 操作符在未来的某个时间执行一个 Action 。

var source = Observable.timer(500);

这是 RxJS 的标准票价。 Scheduler 当你问这个问题时进来了,500 是什么意思?在默认情况下,它将等于 500 毫秒,因为这是约定的内容,也是默认的 Scheduler 将执行的操作,它将等待 500 毫秒,然后发出一个事件。

但是,在某些情况下,我们可能不希望时间流正常运行。最常见的用例是我们在测试时。我们实际上不想等待 500 毫秒来完成任务,否则我们的测试套件将需要很长时间才能真正完成!

在这种情况下,我们实际上希望控制时间流,这样我们就不必等待 500 毫秒才能验证流的结果。在这种情况下,我们可以使用 TestScheduler 可以同步执行任务,这样我们就不必处​​理任何异步困惑。

let scheduler = new TestScheduler();

//Overrides the default scheduler with the default scheduler
let source = Observable.timer(500, scheduler);

//Subscribe to the source, which behaves normally
source.subscribe(x => expect(x).to.be(0));

//When this gets called all pending actions get executed.
scheduler.flush();

还有其他一些更极端的情况,我们也想改变时间的流动。例如,如果我们在游戏的上下文中操作,我们可能希望将我们的调度链接到 requestAnimationFrame 或其他一些虚假的时间尺度,这将需要使用类似 的东西AnimationFrameSchedulerVirtualTimeScheduler


关于javascript - Rxjs:你想在什么场景下使用调度器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39010291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com