我的问题最终是针对ruby rx库,尽管任何语言的任何示例都会很高兴。 基本上我想要的是将每个操作安排到现有的事件循环(或线程池,就此而言)。我想这必须由调度程序完成。我还没有找到调度程序将递归操作发送到事件循环的任何示例,这就是我要问的原因。这是ruby rx的列表:
https://github.com/ReactiveX/RxRuby/tree/master/lib/rx/concurrency
为什么事件循环?因为我想添加在事件循环中工作的IO操作并利用并发性。像这样:
Rx::Observable.from_enumerable(hosts).
map { |h| HTTP.connect(h) }.
map{|host| host.get("http://myservice/somelist.txt") }.
on_next { |html| parse(html).each_line.....} # you get the idea
答案 0 :(得分:1)
通常使用Scheduler完成,我希望RubyRx端口包含EventloopScheduler
。
您可以使用ObserveOn
运算符
Rx::Observable.from_enumerable(hosts).
observeOn(els). # you have declared els somewhere else as an EventLoopScheduler instance
map { |h| HTTP.connect(h) }.
map{|host| host.get("http://myservice/somelist.txt") }.
on_next { |html| parse(html).each_line.....} # you get the idea
或者你可以在地图中添加并发性
Rx::Observable.from_enumerable(hosts).
observeOn(els). # you have declared els somewhere else as an EventLoopScheduler instance
map { |h| HTTP.connect(h) }.
flatmap{|host| Rx::Observable.start(host.get("http://myservice/somelist.txt"), els) }.
on_next { |html| parse(html).each_line.....} # you get the idea
我希望代码可以工作(我是C#/ JS)