Deli putem


Istovremena funkcija

Odnosi se na: Canvas aplikacije Aplikacije zasnovane na modelu

Izračunava više formula istovremeno.

Opis

Funkcija Concurrent omogućava istovremeno izračunavanje više formula navedenih u okviru istog svojstva ako imaju konektor ili Dataverse pozive. Obično se više formula izračunava lančanim povezivanjem operaterom ; (tačka i zarez), koji izračunava svaku formulu sekvencijalno. Funkcijom Concurent, aplikacija će istovremeno izračunati sve formule unutar svojstva čak i nakon korišćenja operatora „;“. Ovo paralelno izvršavanje će pomoći korisnicima da manje čekaju na isti rezultat.

U svojstvu OnStart aplikacije koristite Concurrent da biste poboljšali performanse kada aplikacija učitava 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 predvideti redosled kojim formule unutar funkcije Concurrent počinju i završavaju izračunavanje. Formule unutar funkcije Concurrent ne treba da sadrže zavisne elemente drugih formula unutar iste funkcije Concurrent, a Power Apps prikazuje grešku ako to pokušate. Iznutra možete bezbedno da preuzmete zavisne elemente od formula izvan funkcije Concurrent jer će se završiti pre nego što se funkcija Concurrent pokrene. Formule nakon funkcije Concurrent mogu sigurno preuzeti zavisne elemente od formula iznutra: sve će se ispuniti pre nego što funkcija Concurrent završi 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.

Možete lančano povezati formule zajedno sa ; operatorom u okviru argumenta sa Concurrent. Na primer, Concurrent( Set( a, 1 ); Set( b, a+1 ), Set( x, 2 ); Set( y, x+2 ) ) izračunava Set( a, 1 ); Set( b, a+1 ) istovremeno sa Set( 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. Istovremeno koristi dostupne mogućnosti i neće se završiti dok se ne procene sve formule.

Ako omogućite Upravljanje greškama na nivou formule (u naprednim postavkama), vraća se prva greška na koju ste naišli u redosledu argumenata u Concurrent; u suprotnom, vraća se prazno. 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 koristiti Concurrent samo u formulama ponašanja.

Sintaksa

Istovremeno ( FormulaKSNUMKS, FormulaKSNUMKS [, ...] )

  • 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 će se jako razlikovati. 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, ali ovaj put su stavljeni u funkciju Concurrent i razdvojeni 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 će se jako razlikovati. Grafikon pokazuje da svi pozivi počinju otprilike u isto vreme i 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. Korišćenjem Concurrent, prepolovili ste ukupan broj vremena potrebnih 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 jedan se 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.