Compararea modelelor asincrone intre C # si JavaScript

La jobul meu petrec mult timp scriind atat C #, cat si JavaScript. Codul este adesea legat de aplicatii sau servicii web, astfel contin, de obicei, o multime de comportament asincron care implica cereri http de la client la server sau de la server la alt serviciu dependent. matrimoniale sector 3 De multe ori, cand prind o noua functie care necesita schimbarea limbii, mintea mea se gandeste inca la tiparele celeilalte limbi. Uneori, acest lucru este bun, deoarece ofera o solutie simpla de referinta la problema si alteori cred ca ma poate impiedica sa folosesc pe deplin caracteristicile limbii si sa scriu codul in modul cel mai natural pentru limba respectiva. curve filiasi

De exemplu, cand trec de la JavaScript la C #, care are un control mai puternic asupra codului asincronizat cu Sarcini, uneori sunt inca blocat gandindu-ma la Promisiuni. Sarcinile au caracteristici suplimentare, cum ar fi capacitatea de a fi create fara a incepe executarea, si posibilitatea de a fi anulate si gasesc mai multe optiuni de creare a unor cereale, dar totusi nu se desfac automat ca Promisiunile, care este de fapt cel mai frecvent punct de durere, deci nu este intotdeauna adevarat ca mai multe functii inseamna ca aveti mai multe instrumente de utilizat pentru a face treaba in cel mai bun mod posibil. escorte delux Uneori, primitivele mai simple pot functiona mai bine.

Oricum, suficient fundal, cred ca majoritatea oamenilor cunosc deja aceste tipare, deoarece au existat postari pe bloguri de la experti precum Stephen Cleary, dar am vrut sa ma fortez sa le scriu pentru a aminti mai bine diferentele si a pastra lista pentru referinte viitoare. dame de companie italia

C # are TaskCompletionSource si JavaScript a avut amanari. Amanarile s-au demodat in favoarea noului constructor Promise, dar pentru a compara acel model putem folosi Task. curve braila Run.

C #: TaskCompletionSource

JavaScript: amanat

C #: Task. monitorul de iasi matrimoniale Run

JavaScript: promisiune

C # ca task.ContinueWith si JavaScript are Promise. publi 24 matrimoniale arad then si ambele au, de asemenea, async / await.

C #: Task. escorte de futut ContinueWith

JavaScript: Promise.then

C #: asincronizat / asteapta

JavaScript: asincronizat / asteapta

Apelati operatiunea asincrona A apoi apelati operatiunea asincrona B. matrimoniale crestine cluj Exemplul pe care il folosim mai jos implica luarea a doua operatii asincronizate conexe si combinarea rezultatului pentru a construi un obiect de domeniu mai mare.

C #: Task. curve gratis ContinueWith

JavaScript: Promise.then

Exista o diferenta majora intre ContinueWith si apoi. numere de telefon curve



  • matrimoniale orastie
  • ecupidon matrimoniale
  • curve flocoase
  • matrimoniale oradea publi
  • curve de romania
  • matrimoniale forum 3x
  • matrimoniale curve ploiesti
  • forum curve pitesti
  • matrimoniale timis publi24
  • matrimoniale crestine penticostale
  • escorte gay
  • curve dorohoi
  • escorte mature bucuresti
  • escorte constanta pret
  • matrimoniale casatorii cluj
  • matrimoniale femei barbati
  • escorte irlanda
  • escorte predeal
  • escorte oana sibiu
  • curve valcea





Promisiunile se desfac automat! Acest lucru reduce considerabil complexitatea pe care dezvoltatorul trebuie sa o ia in considerare.

C #: asincronizat / asteapta

JavaScript: asincronizat / asteapta

Inlantuirea tehnica a sarcinilor asincronizate de mai sus pentru a forma un obiect mai mare a fost un tip de agregare, dar acele sarcini au fost realizate secvential. matrimoniale ramnicu sarat Acest model demonstreaza executarea sarcinilor in paralel si asteptarea finalizarii tuturor. In exemplul de mai jos imaginati-va ca trebuie sa preluati o gramada de articole individuale din baza de date si sa adaugati valoarea unei proprietati. publi24 cluj escorte

C #: Task.WhenAll

JavaScript: Promise. curve buc all

Acum, pentru ceva mai complex. Aceasta este cu adevarat doar o aplicatie mai avansata a diferitelor tehnici de mai sus, dar este mai mult un exemplu real decat o singura data. matrimoniale constanta casa de cultura

In acest scenariu fiecare sarcina returneaza o matrice de elemente, care este utilizata pentru a genera o alta matrice de sarcini si asa mai departe pana cand se ajunge la frunzele copacului si apoi se returneaza intregul obiect. Pentru cazul de utilizare, imaginati-va doua modele care sunt legate intre ele si clientul doreste sa construiasca aceasta relatie; cu toate acestea, API-ul serviciului returneaza numai ID-urile modelelor aferente. escorte milf Clientul trebuie sa obtina modelul parinte, apoi sa solicite modelele aferente si sa construiasca obiectul complet.

Exemple de interfete

RemoteNode simuleaza raspunsul de la server, care include doar ID-urile articolelor aferente; cu toate acestea, clientul construieste nodul complet, care include referinte complete la alte noduri. curve futute dur

Din nou vom compara Task.ContinueWith / Promise. escorte timisoara deplasari then cu Async / Await

Acum folosind async / await

In general, diferentele sunt minore si este bine sa vedem paralelele dintre limbi. La urma urmei, nu sunt atat de diferiti. escorte mature 50 ani Daca devii puternic in gestionarea comportamentului asincron intr-o limba, acesta ar trebui sa fie transferabil in cealalta. Cel mai notabil lucru este ca Promisele se desfasoara automat asa cum am mentionat mai sus si, in opinia mea, acest lucru face ca tratarea acestor operatii de asincronizare de baza sa fie mai usoara in JavaScript, chiar daca are mai putine caracteristici de limba si configuratie pentru a va ajuta sa rezolvati problema. matrimoniale baia mare

Acestea fiind spuse, C # are capacitatea de a crea sarcini care nu sunt pornite si, de asemenea, capacitatea de a anula sarcinile. Ambele ar trebui sa ajunga la JavaScript native prin generatoare si specificatii de anulare, dar pana atunci exista unele tipuri de operatii care vor ramane excesiv de dificile, deoarece primitivele nu sunt inca acolo. escorte ordea

Tot codul provine din esentiale este in proiecte de lucru pe care le puteti vizualiza sau descarca aici:



https://github.com/mattmazzola/asyncpatterns