Napomena
Za pristup ovoj stranici potrebna je autorizacija. Možete se pokušati prijaviti ili promijeniti direktorije.
Za pristup ovoj stranici potrebna je autorizacija. Možete pokušati promijeniti direktorije.
Odnosi se na: Aplikacije platna
– aplikacije utemeljene na modelu
Istodobno procjenjuje više formula.
Opis
Funkcija Concurrent omogućuje da se u isto vrijeme vrednuju više formula navedenih unutar istog svojstva ako imaju konektor ili Podatkovne pozive. U normalnim uvjetima, više se formula procjenjuje lančanim povezivanjem pomoću (točka sa zarezom) operatora ;, čime se svaka formula procjenjuje po redoslijedu. Uz funkciju Concurrent , aplikacija će ocijenite sve formule unutar svojstva istovremeno čak i nakon korištenja operatora ; . Ta istodobnost korisnicima olakšava čekanje manje na isti rezultat.
U svojstvu OnStart aplikacije koristite za poboljšanje Concurrent performansi kada aplikacija učitava podatke. Kada podatkovni pozivi ne započnu dok se prethodni pozivi ne završe, aplikacija mora pričekati zbroj svih vremena zahtjeva. Ako se podatkovni pozivi pokrenu u isto vrijeme, aplikacija treba pričekati samo najduže vrijeme zahtjeva. Web-preglednici često poboljšavaju performanse izvršavajući mrežne pozive istodobno.
Ne možete predvidjeti redoslijed kojim formule unutar funkcije započinju Concurrent i završavaju procjenu. Formule unutar funkcije Concurrent ne bi trebalo sadržavati zavisnosti o drugim formulama Concurrent unutar iste funkcije, a Power Apps prikazuje pogrešku ako to pokušate. Unutar funkcije možete sigurno uzeti ovisnosti o formulama Concurrent izvan funkcije jer se dovrše prije početka Concurrent funkcije. Formule nakon Concurrent što funkcija sigurno ovisi o formulama unutar: Concurrent sve će se dovršiti prije dovršetka funkcije i prijeći na sljedeću formulu u lancu (ako koristite operator ; ). Pazite na suptilne ovisnosti redoslijeda ako pozivate funkcije ili načine usluge koji imaju nuspojave.
Formule možete povezati s operatorom ; unutar argumenta za Concurrent. Na primjer, Concurrent( Set( a, 1 ); Set( b, a+1 ), Set( x, 2 ); Set( y, x+2 ) ) procjenjuje Vrijednost Set( a, 1 ); Set( b, a+1 ) istovremeno sa skupom( x, 2 ); Set( y, x + 2 ). U tom slučaju su ovisnosti unutar formula dobre: a bit će postavljeno prije b, a x prije y.
Ovisno o uređaju ili pregledniku u kojem se aplikacija izvršava, samo nekoliko formula može se istodobno procjenjivati. Concurrent koristi dostupne mogućnosti i neće završiti sve dok se ne vrednuju sve formule.
Ako omogućite upravljanje pogreškama na razini formule (u dodatnim postavkama), vraća se prva pogreška u redoslijedu argumenata Concurrent; u suprotnom se vraća prazna vrijednost. Ako su sve formule uspješne, vraća se vrijednost true. Ako jedna formula bude neuspješna, ostatak te formule staje, ali ostale formule se nastavljaju procjenjivati.
Možete koristiti samo Concurrent u formulama ponašanja.
Sintaksa
Concurrent( Formula1, Formula2 [, ...] )
- Formule – Obavezno. Formule koje se procjenjuju istodobno. Morate unijeti najmanje dvije formule.
Primjeri
Brže učitavanje podataka
Stvorite aplikaciju i dodajte četiri izvora podataka iz Microsoft Dataverse, SQL Server ili SharePoint.
Ovaj primjer koristi četiri tablice iz ogledne baze podataka Adventure Works u usluzi SQL Azure. Nakon što stvorite bazu podataka, povežite se s njom iz aplikacije Power Apps koristeći potpuno kvalificirano ime poslužitelja (na primjer, srvname.database.windows.net):
Dodajte kontrolu Button i postavite svojstvo OnSelect na sljedeću formulu:
ClearCollect( Product, '[SalesLT].[Product]' ); ClearCollect( Customer, '[SalesLT].[Customer]' ); ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ); ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )U pregledniku Microsoft Edge ili Google Chrome uključite razvojne alate za nadzor mrežnog prometa dok se vaša aplikacija izvršava.
(neobvezno) Uključite ograničavanje protoka mreže kako biste pojačali učinke ove usporedbe.
Dok držite pritisnutu tipku Alt, odaberite gumb i zatim pogledajte mrežni promet.
Alati prikazuju četiri zahtjeva izvršena u nizu, slično ovom primjeru. Stvarno vrijeme uklonjeno je jer se znatno razlikuju. Grafikon pokazuje da svaki poziv započinje nakon što zadnji završi:
Spremite, zatvorite i ponovno otvorite aplikaciju.
Power Apps predmemorira podatke, pa ponovni odabir gumba neće nužno prouzročiti četiri nova zahtjeva. Svaki put kada želite testirati performanse, zatvorite i ponovno otvorite aplikaciju. Ako ste uključili ograničavanje protoka mreže, možda ćete ga željeti isključiti dok ne budete spremni za novi test.
Dodajte drugu kontrolu Button i postavite njezino svojstvo OnSelect na sljedeću formulu:
Concurrent( ClearCollect( Product, '[SalesLT].[Product]' ), ClearCollect( Customer, '[SalesLT].[Customer]' ), ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ), ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' ) )Imajte na umu da ste na prvi gumb dodali iste pozive clearCollect , Concurrent ali da su ovaj put zarezani u funkciju i odvojeni zarezima.
Izbrišite mrežni nadzor u pregledniku.
Ako ste prije koristili ograničavanje protoka mreže, ponovo ga uključite.
Dok držite pritisnutu tipku Alt, odaberite drugi gumb i zatim pogledajte mrežni promet.
Alati prikazuju četiri zahtjeva izvršena u nizu istodobno, slično ovom primjeru. Opet, stvarno vrijeme su uklonjene jer se razlikuju divlje. Na grafikonu se vidi da svi pozivi počinju otprilike u isto vrijeme i ne pričekajte da prethodni završi:
Ti se grafikoni temelje na istoj skali. Korištenjem Concurrentste prepoloviti ukupno vrijeme koje je za te operacije potrebno da se dovrše.
Spremite, zatvorite i ponovno otvorite aplikaciju.
Stanje utrke
Dodajte neku vezu usluzi Microsoft Translator za vašu aplikaciju.
Dodajte kontrolu Text input i preimenujte je u TextInput1 ako ima neki drugi naziv.
Dodajte kontrolu Button i postavite njezino svojstvo OnSelect na sljedeću formulu:
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 } )Dodajte kontrolu Data table i postavite njezino svojstvo Items na Results.
Na kartici Svojstva desnog okna odaberite Uredi polja da biste otvorili okno Polja.
Na popisu polja odaberite potvrdni okvir za svako polje da biste ih sve prikazali u tablici podataka.
(neobvezno) Povucite polje Input na vrh popisa i povucite polje FrenchFaster na dno popisa.
U kontroli Text input utipkajte ili zalijepite frazu za prijevod.
Dok držite pritisnutu tipku Alt, nekoliko puta odaberite gumb da biste ispunili tablicu.
Vremena su prikazana u milisekundama.
U nekim je slučajevima prijevod na francuski brži od njemačkog, i obrnuto. Oba počinju u isto vrijeme, ali se jedan vraća prije drugog iz različitih razloga, uključujući kašnjenje mreže i obradu na strani poslužitelja.
Stanje utrke može se dogoditi ako aplikacija ovisi o jednom prijevodu koji se završava prvi. Srećom, aplikacija Power Apps označava većinu vremenskih ovisnosti koje može otkriti.