• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

RxJS in action: RxJs vs RXJava concurrency

 
Ranch Hand
Posts: 607
11
  • Number of slices to send:
    Optional 'thank-you' note:
I am almost flluent in RXJava and reading the snippets in the  sample of the book, it looks exactly the same thing, there is an Observable, an Observer, the two are linked with a subscribe method, and a bunch of operators. In Android there are the so called Schedulers, that are really useful to manage async  calls, do you have a similar concept to manager concurrency? Thanks
 
Author
Posts: 8
5
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
Thanks for the question!

Indeed, in RxJS you will also find a concept of Schedulers as well, however their use tends to be much rarer as its utility is somewhat different from what you would find in RxJava or Rx.NET (where I started my journey with reactive programming). Because JavaScript is a single threaded language that manages async through an event loop, there is little need to be able to manage multiple contexts (re: thread) as you might with RxAndroid where you have both a UI thread as well as long running background tasks or asynchronous API calls.

Thus you will primarily see Schedulers being used in testing, where we can use the TestScheduler to mock out and directly control time. One other use case where you might also find schedulers is in games or simulators that use the "requestAnimationFrame" animation loop and we can use the AnimationFrameScheduler to synchronize Observables with the animation loop.
 
Giovanni Montano
Ranch Hand
Posts: 607
11
  • Number of slices to send:
    Optional 'thank-you' note:

Pau Daniels wrote:Thanks for the question!

Indeed, in RxJS you will also find a concept of Schedulers as well, however their use tends to be much rarer as its utility is somewhat different from what you would find in RxJava or Rx.NET (where I started my journey with reactive programming). Because JavaScript is a single threaded language that manages async through an event loop, there is little need to be able to manage multiple contexts (re: thread) as you might with RxAndroid where you have both a UI thread as well as long running background tasks or asynchronous API calls.

Thus you will primarily see Schedulers being used in testing, where we can use the TestScheduler to mock out and directly control time. One other use case where you might also find schedulers is in games or simulators that use the "requestAnimationFrame" animation loop and we can use the AnimationFrameScheduler to synchronize Observables with the animation loop.


crystally clear! great reply, makes perfectly sense in RXAndroid you have observeOn and subscribeOn just because you want to maintain the UI responsive,  as you say. Did not know about javascript( actually I grasped the basis only to dedicate a bit more to reactJS).  I guess so the power in Javascript to use RX comes when you have to manage multiple calls with the server, or when you want simplify some operations that with a no functional approach will be much more verbose and code unreadable
 
Greenhorn
Posts: 9
  • Number of slices to send:
    Optional 'thank-you' note:

Pau Daniels wrote:Because JavaScript is a single threaded language that manages async through an event loop, there is little need to be able to manage multiple contexts (re: thread) as you might with RxAndroid where you have both a UI thread as well as long running background tasks or asynchronous API calls



In a browser you could have a webworker which (supposedly?) runs in its own event loop. Do schedulers make any sense in that case?
 
Pau Daniels
Author
Posts: 8
5
  • Number of slices to send:
    Optional 'thank-you' note:
I don't think the Scheduler interface would work very well with that of the Web Worker because there is a lot of indirection which would make it difficult to send actions that the Scheduler needs executed to the Worker. I think you can still use Web Workers with RxJS but it would be through leveraging them as as we would something like a WebSocket.


See my more complete answer the same topic here
 
Don't get me started about those stupid light bulbs.
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |