Deli putem


Concurrent Funkciju

Odnosi se na: Aplikacije platna koje potiče od modela

Izračunava više formula istovremeno.

Opis

Funkcija Concurrent omogućava da više formula navedenih u okviru istog svojstva bude procenjeno u isto vreme ako imaju pozive konektora ili dataverse poziva. Obično se više formula izračunava lančanim povezivanjem operaterom ; (tačka i zarez), koji izračunava svaku formulu sekvencijalno. Pomoću funkcije Concurrent , aplikacija procenjuje sve formule u okviru svojstva istovremeno čak i nakon korišćenja operatora ;. Ovo paralelno izvršavanje pomaže korisnicima da manje čekaju na isti rezultat.

U svojstvu OnStart aplikacije koristite da biste Concurrent poboljšali performanse kada aplikacija učita podatke. Kada pozivi za podatke ne počinju dok se prethodni pozivi ne završe, aplikacija mora da sačeka zbir svih vremena zahteva. Ako se pozivi za podatke pokrenu u isto vreme, aplikacija treba da sačeka samo najduže vreme zahteva. Veb-pregledači često poboljšavaju performanse paralelnim obrađivanjem mrežnih poziva.

Ne možete da predvidite redosled kojim formule u okviru funkcije počinju Concurrent i završavaju procenu. Formule unutar funkcije Concurrent ne bi trebalo da sadrže zavisne elemente od drugih formula Concurrent u okviru iste funkcije, a Power Apps prikazuje grešku ako pokušate. Iz okvira, možete bezbedno da preuzmete zavisne elemente od formula Concurrent izvan funkcije zato što se one dovrše pre nego što funkcija Concurrent počne. Concurrent Formule nakon funkcije mogu bezbedno da preuzmu zavisnosti od formula u okviru: Concurrent sve će se dovršiti pre nego što funkcija završi sa radom i pređe na sledeću formulu u lancu (ako koristite operator ;). Pazite na suptilne zavisnosti od redosleda ako pozivate funkcije ili metode usluga koji izazivaju neželjene efekte.

Formule možete da uvezete zajedno sa operatorom ; u okviru argumenta za Concurrent. Na primer, Concurrent( Set( a, 1 ); Set( b, a+1 ), Set( x, 2 ); Set( y, x+2 ) ) procenjuje Set( a, 1 ); Set( b, a+1 ) u kombinaciji sa skupom( x, 2 ); Set( y, x+2 ). U ovom slučaju, zavisnosti unutar formula su u redu: a će biti postavljena pre b, a x će biti postavljena pre y.

U zavisnosti od uređaja ili pregledača u kome se aplikacija koristi, samo nekoliko formula se može istovremeno izračunavati. Concurrent koristi dostupne mogućnosti i neće završiti sve dok se ne procene sve formule.

Ako omogućite upravljanje greškama na nivou formule (u naprednim postavkama), dobija se prva greška na koju se naišlo u redosledu argumenata Concurrent; u suprotnom , dobija se prazna vrednost. Ako su sve formule uspešne, vraća se vrednost tačno. Ako jedna formula ne uspe, ostatak te formule prestaje, ali ostale formule nastavljaju s izračunavanjem.

Možete da koristite samo Concurrent u formulama ponašanja.

Sintaksa

Concurrent( Formula1, Formula2 [, ...] )

  • Formule – Obavezno. Formule za istovremeno izračunavanje. Morate da navedete najmanje dve formule.

Primeri

Učitavanje podataka brže

  1. Napravite aplikaciju i dodajte iz četiri izvora podataka iz Microsoft Dataverse, SQL Server ili SharePoint.

    Ovaj primer koristi četiri tabele iz primer baze podataka Adventure Works u SQL Azure. Nakon što kreirate bazu podataka, povežite se sa njom iz Power Apps koristeći u potpunosti kvalifikovano ime servera (na primer, srvname.database.windows.net):

    Povezivanje sa Adventure Works bazom podataka u usluzi Azure.

  2. Dodajte kontrolu Button i podesite njeno svojstvo OnSelect prema ovoj formuli:

    ClearCollect( Product, '[SalesLT].[Product]' );
    ClearCollect( Customer, '[SalesLT].[Customer]' );
    ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' );
    ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
    
  3. U Microsoft Edge ili Google Chrome, uključite alatke za programere da biste pratili mrežni saobraćaj dok se aplikacija koristi.

  4. (opcionalno) Uključite mrežno ograničenje da biste preuveličali efekte ovog poređenja.

  5. Dok držite taster Alt, izaberite dugme, a zatim pratite mrežni saobraćaj.

    Alatke prikazuju četiri zahteva izvršena uzastopce, slično ovom primeru. Stvarna vremena su uklonjena jer se divlje razlikuju. Grafikon pokazuje da svaki poziv počinje nakon završetka prethodnog:

    Grafikon vremena od četiri mrežna zahteva, od kojih svaki počinje nakon što se predhodni završi, pokrivajući ceo raspon vremena.

  6. Sačuvajte, zatvorite i ponovo otvorite aplikaciju.

    Power Apps kešira podatke, tako da ponovni odabir dugmeta neće nužno izazvati četiri nova zahteva. Svaki put kada želite da testirate performanse, zatvorite i ponovo otvorite aplikaciju. Ako ste uključili mrežno ograničenje, možda bi trebalo da ga isključite dok ne budete spremni za još jedan test.

  7. Dodajte drugu kontrolu Dugme i podesite njeno svojstvo OnSelect prema ovoj formuli:

    Concurrent(
        ClearCollect( Product, '[SalesLT].[Product]' ),
        ClearCollect( Customer, '[SalesLT].[Customer]' ),
        ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ),
        ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
    )
    

    Imajte na umu da ste dodali iste ClearCollect pozive na prvo dugme, Concurrent ali su ovog puta umotani u funkciju i razdvojene zarezima.

  8. Ispraznite mrežni monitor u pregledaču.

  9. Ako ste ranije koristili mrežno ograničenje, ponovo ga uključite.

  10. Dok držite taster Alt, izaberite drugo dugme, a zatim pratite mrežni saobraćaj.

    Alatke prikazuju četiri zahteva izvršena istovremeno, slično ovom primeru. Ponovo, stvarna vremena su uklonjena jer se divlje razlikuju. Grafikon pokazuje da svi pozivi počinju u isto vreme i da ne čekaju da se prethodni završi:

    Vremenski grafikon od četiri mrežna zahteva, od kojih sva četiri počinju zajedno, pokrivaju oko polovine vremenskog raspona.

    Ovi grafikoni se zasnivaju na istoj skali. Koristeći Concurrent, prepolovili ste ukupno vreme potrebno za završetak ovih operacija.

  11. Sačuvajte, zatvorite i ponovo otvorite aplikaciju.

Uslov trke

  1. Dodajte vezu ka usluzi Microsoft prevodilac u vašu aplikaciju.

  2. Dodajte kontrolu Unos teksta i preimenujte TextInput1 ako ima drugačije ime.

  3. Dodajte kontrolu Dugme i podesite njeno svojstvo OnSelect prema ovoj formuli:

    Set( StartTime, Value( Now() ) );
    Concurrent(
        Set( FRTrans, MicrosoftTranslator.Translate( TextInput1.Text, "fr" ) );
            Set( FRTransTime, Value( Now() ) ),
        Set( DETrans, MicrosoftTranslator.Translate( TextInput1.Text, "de" ) );
            Set( DETransTime, Value( Now() ) )
    );
    Collect( Results,
        {
            Input: TextInput1.Text,
            French: FRTrans, FrenchTime: FRTransTime - StartTime,
            German: DETrans, GermanTime: DETransTime - StartTime,
            FrenchFaster: FRTransTime < DETransTime
        }
    )
    
  4. Dodajte kontrolu Tabela podataka i podesite njeno svojstvo Items na Rezultati.

  5. Na kartici Svojstva u desnom oknu, izaberite Uređivanje polja da biste otvorili okno Polja.

  6. Na listi polja, izaberite polje za potvrdu da biste ih sve prikazali u tabeli podataka.

  7. (opcionalno) Prevucite polje Ulazni do vrha liste i prevucite polje FrenchFaster na dno liste.

    Lista polja u kolekciji Rezultati.

  8. U kontroli Unos teksta, unesite ili nalepite frazu za prevođenje.

  9. Dok držite taster Alt pritisnutim, izaberite taster više puta da biste ispunili tabelu.

    Vremena su prikazana u milisekundama.

    Prikaz tabele podataka koja sadrži rezultate prevođenja stringa

    U nekim je slučajevima francuski prevod brži od nemačkog, i obrnuto. Oba počinju u isto vreme, ali se jedan vraća pre drugog iz različitih razloga, uključujući kašnjenje mreže i obradu na strani servera.

    Uslov trke bi se pojavio ako aplikacija zavisi od toga da se jedan prevod prvi završi. Srećom, Power Apps označava većinu zavisnosti trajanja koje može da otkrije.