我正在使用Rx,并希望每隔1分钟定期执行一项任务。
我的任务是从一组URL中异步获取Feeds并且它正常工作:
var rssLinks = ["http://host1/rss.xml", "http://host2/rss.xml", "http://host3/rss.xml"];
// My Task
var task = Rx.Observable.from(rssLinks)
.flatMap(functions.fetchFeeds);
task.subscribe(function(feed) {
console.log("\nFeed " + feed.title + ", " + feed.link);
});
因此。我已经读过有关Scheduler及其schedulePeriodic方法但我不能定期执行我的任务。
var disposable = Rx.Scheduler.timeout.schedulePeriodic(
60000, /* 1 minute */
function () {
// Execute My Task...
});
有什么想法吗?
提前致谢!
答案 0 :(得分:9)
您只是在寻找Rx.Observable.interval,所以这样的事情会发生:
var taskResults = Rx.Observable.interval(60000).flatMap(function() {
return Rx.Observable.from(rssLinks).flatMap(functions.fetchFeeds);
});
taskResults.subscribe(function(x) {
// do whatever here.
});
这样的事情,也许吧?
var rssLinks = [{ interval: 5000, url: 'http://whatever'}, { interval: 3000, url: 'https://foobar' }];
var taskResults = Rx.Observable.from(rssLinks).flatMap(function(rssLink) {
return Rx.Observable.interval(rssLink.interval).map(function(rssLink) {
return functions.fetchFeeds(rssLink.url);
});
});