我需要创建一个随机间隔推文的机器人,如下所示:
wait 1 hour
tweets something
wait 5 hours
tweets something
wait 30 minutes
tweets something
wait 10 hours
tweets something
延迟时间介于10小时之间或类似的情况
可观察量的问题在于我需要生成这些间隔,然后将其输入到可观察量链中。例如,我需要生成一个包含所有延迟的数组,并且只有订阅它才能发布推文。
有没有办法创建一个只在它结束时发出新项目的observable?例如:
Rx.Observable.just().timer(randomTime()).subscribe(emitObservableAgain());
我认为这不是Observables的意图。就像......将一个可观察链的末端连接到自身是一个很好的实践吗?
另外,如何将rx.timer导入nodejs?只导入' rx' (来自npm)没有给我这些功能
答案 0 :(得分:4)
您可以使用重复:
sessionStorage.userId
编辑:我添加了一个显示流如何工作的实时脚本:
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();