gpt4 book ai didi

javascript - 每次流结束时延迟随机时间的 Observable

转载 作者:行者123 更新时间:2023-11-29 17:53:00 25 4
gpt4 key购买 nike

我需要创建一个以随机间隔发送推文的机器人,如下所示:

wait 1 hour
tweets something
wait 5 hours
tweets something
wait 30 minutes
tweets something
wait 10 hours
tweets something

延迟时间在 10 小时或类似时间之间

observables 的问题是我需要生成这些间隔,然后将其输入到 observables 链中。例如,我需要生成一个包含所有延迟的数组,并且只有他们订阅它才能发推文。

有没有一种方法可以创建一个在自身结束时发出新项目的可观察对象?例如:

Rx.Observable.just().timer(randomTime()).subscribe(emitObservableAgain());

我认为这在某种程度上不是 Observables 的本意。就像...将可观察链的末端连接到自身是一个好习惯吗?

另外,如何将 rx.timer 导入到 nodejs 中?仅导入“rx”(来自 npm)不会给我这些功能

最佳答案

你可以使用重复:

Rx.Observable.just()
.switchMap(() => Rx.Observable.timer(randomTime()))
.do(tweetMyThing)
.repeat()
.subscribe();

编辑:我添加了一个显示流如何工作的实时脚本:

// Helper-Methods to visualize the stream
function randomTime() {
return ~~(Math.random() * 2000) + 50;
}

var lastReceivedEvent = +new Date();
function tweetMyThing(value) {
console.log("Received after " + (+new Date() - lastReceivedEvent));
lastReceivedEvent = +new Date();
}
// \end of helper-methods

// the stream
Rx.Observable.just()
.switchMap(() => Rx.Observable.timer(randomTime()))
.do(tweetMyThing)
.repeat(20)
.subscribe();
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/4.1.0/rx.all.js"></script>

关于javascript - 每次流结束时延迟随机时间的 Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41628268/

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