1

Meine Frage ist letztlich für Ruby rx-Bibliothek, obwohl jedes Beispiel in einer beliebigen Sprache gerne gewürdigt werden würde. Grundsätzlich möchte ich jede Operation auf eine vorhandene Ereignisschleife (oder Thread-Pool, für diese Angelegenheit) planen. Ich denke, das muss von einem Scheduler erledigt werden. Ich habe kein Beispiel für einen Scheduler gefunden, der die rekursiven Operationen an eine Ereignisschleife sendet, und darum frage ich. Hier ist die Liste für Ruby rx:FRP-Beispiel mit Ereignisschleife oder Thread-Pool

https://github.com/ReactiveX/RxRuby/tree/master/lib/rx/concurrency

Warum die Ereignisschleife? Weil ich IO-Operationen hinzufügen möchte, die innerhalb der Ereignisschleife arbeiten und Parallelität nutzen. Etwas wie folgt aus:

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 

Antwort

1

Dies wird normalerweise mit einem Scheduler getan, und ich würde erwarten, dass die RubyRx Port des EventloopScheduler aufgenommen hat.

Sie können entweder enqueue/Scheduler sie auf ihn mit einem ObserveOn Operator

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 

oder könnten Sie die Parallelität in der Karte

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 

ich, dass Code hoffen hinzufügen könnte funktionieren (ich bin C#/JS)

+0

es ist genau die Definition des Schedulers, die ich vermisse, da die Beispiele, die ich sehe, viele Rückrufe haben, die ich irgendwie überschreiben darf (#scheduleelative, #schedule_recu rsive, #schedule_recursive_with_state ...) und es sind diese Interaktionen, um die ich kämpfen muss. Kennen Sie Beispiele verfügbar (vielleicht in C# oder JS)? – ChuckE

+1

Ich habe hier ein paar Sachen auf Scheduler für C# geschrieben - http://introtorx.com/Content/v1.0.10621.0/15_SchedulingAndThreading.html. Es scheint, dass der EventLoopScheduler von RxRuby fehlt. Dies könnte eine Gelegenheit für Sie sein, eine PR zu erstellen und sie zurückzuzahlen. –

+0

nicht nur das, ein Thread-Pool-Scheduler scheint auch zu fehlen. Ich werde es mir anschauen und sehen, was ich daraus machen kann. – ChuckE