Luc*_*ile 1 scheduled-tasks reactive-programming rxjs
我正在使用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);
});
Run Code Online (Sandbox Code Playgroud)
所以.我已经阅读过Scheduler及其schedulePeriodic方法,但我不能定期执行我的任务.
var disposable = Rx.Scheduler.timeout.schedulePeriodic(
60000, /* 1 minute */
function () {
// Execute My Task...
});
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
提前致谢!
你只是在寻找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.
});
Run Code Online (Sandbox Code Playgroud)
也许这样的事情呢?
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);
});
});
Run Code Online (Sandbox Code Playgroud)