Rx.NET – pour ceux qui connaissent déjà RxJS – Jointures et Rx...



Rx.NET – pour ceux qui connaissent déjà RxJS – Jointures et Rx...

0 0


RxNetFromJs


On Github alexvictoor / RxNetFromJs

Rx.NET

pour ceux qui connaissent déjà RxJS

Le typage...

Opérateurs spécifiques à certains types le type unit on ne peut pas faire de merge avec des choux et des carottes

Les opérateurs

Pas de Map... ... ni de FlatMap

des majuscules partout Lien fort avec LINQ

Les expressions LINQ

			from quote in quotes
where quote.Symbol == "MSFT"
select quote;
		

Select

Les expressions LINQ

			from market in markets
from quote in market.quotes
where quote.Symbol == "MSFT"
select quote;
		

SelectMany

Jointures et Rx...

			from start in mouseDown
join move in mouseMove
on mouseUp equals Observable.Empty<Unit>() into moveGroup
		

BART DE SMET'S ON-LINE BLOG

A partir de

'event' .NET Anciennes API async APM Task, et IEnumerable

avec la méthode ToObservable()

Création d'Observable

		var obs = Read().ToObservable();

IEnumerable<string> Read() {
	while (true)
		yield return Console.ReadLine();
}
	

Lien avec async/await

			await myObservable;
		

Des threads et plus de schedulers

ImmediateScheduler CurrentThreadScheduler TaskPoolScheduler

CurrentThreadScheduler c'est le trampoline JS

NO LOCK!

EventLoopScheduler FTW

A propos de schedulers...

ObserveOn ?

SubscribeOn ?

Ca imprime quoi ?

		Observable.Range(1, 10)
	.ObserveOn(Scheduler.TaskPool)
	.Subscribe(
	    x =>
	    {
	        Thread.Sleep(1000 - (100 * x));
	        Console.Out.WriteLine( x 
	        	+ "  in thread " 
	        	+ Thread.CurrentThread.ManagedThreadId);
	    }
	);
	

les guaranties de sérialisation

Rx ça sérialise !

		1  in thread 8
2  in thread 9
3  in thread 8
4  in thread 8
5  in thread 14
6  in thread 9
7  in thread 13
8  in thread 9
9  in thread 14
10  in thread 9
	

les guaranties de sérialisation

... dans le doute

Observable.Synchronize()

ça s'appelle Serialize dans d'autres languages utilie notamment avec les Subject
Rx.NET pour ceux qui connaissent déjà RxJS