Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: Modelem řízené aplikace
plátna
Vyhodnocuje vzorce souběžně s jedním dalším.
Popis
Funkce Concurrent umožňuje vyhodnotit více vzorců zadaných ve stejné vlastnosti ve stejnou dobu, pokud mají volání spojnice nebo Dataverse. Za normálních okolností probíhá vyhodnocování zřetězením vzorců pomocí operátoru ; (středník), který vyhodnocuje každý vzorec postupně. Concurrent S funkcí aplikace vyhodnotí všechny vzorce v rámci vlastnosti souběžně i po použití operátoru ; . Tato souběžnost pomáhá uživatelům čekat méně na stejný výsledek.
Ve vlastnosti OnStart vaší aplikace použijte Concurrent ke zvýšení výkonu při načítání dat. Když se volání dat zahájí až po dokončení předchozích volání, doba čekání aplikace odpovídá součtu všech dob žádostí. Pokud se volání dat spustí současně, musí aplikace čekat jen tak dlouho, jak trvá nejdelší doba žádosti. Prováděním souběžných siťových volání se často zlepšuje výkon u webových prohlížečů.
Nemůžete předpovědět pořadí, ve kterém vzorce v rámci počátečního a koncového Concurrent vyhodnocení funkce. Vzorce v rámci Concurrent funkce by neměly obsahovat závislosti na jiných vzorcích ve stejné Concurrent funkci a Power Apps při pokusu zobrazí chybu. V rámci této funkce můžete bezpečně převzít závislosti na vzorcích mimo Concurrent funkci, protože se dokončí před spuštěním Concurrent funkce. Vzorce za Concurrent funkcí můžou bezpečně převzít závislosti na vzorcích v rámci: všechny se dokončí před Concurrent dokončením funkce a přesunou se k dalšímu vzorci v řetězci (pokud použijete operátor ; ). Pokud chcete volat funkce nebo metody služby s vedlejšími účinky, dávejte si pozor na drobné závislosti v pořadí.
Vzorce můžete zřetězovat společně s operátorem ; v argumentu na Concurrent. Například Concurrent( Set( a; 1 ); Set( b; a+1 ); Set( x; 2 ); Set( y; x +2 ) vyhodnocuje Set( a; 1 ); Set( b; a +1 ) souběžně s set( x; 2 ); Set( y, x+2 ). V tomto případě jsou závislosti v rámci vzorců v pořádku: a se nastaví před b a x se nastaví před y.
V závislosti na zařízení nebo prohlížeči, ve kterém je aplikace spuštěná, se může současně vyhodnotit jen několik vzorců. Concurrent používá dostupné funkce a nedokončí se, dokud nebudou vyhodnoceny všechny vzorce.
Pokud povolíte správu chyb na úrovni vzorce (v upřesňujícím nastavení), vrátí Concurrentse první chyba zjištěná v pořadí argumentů . V opačném případě se vrátí prázdná hodnota . Když jsou všechny vzorce úspěšné, vrátí se hodnota true. V případě, že se jeden vzorec nezdaří, zbytek tohoto vzorce se zastaví – jiné vzorce se ale budou i nadále vyhodnocovat.
Můžete použít Concurrent pouze ve vzorcích chování.
Syntaxe
Concurrent( Vzorec1, Vzorec2 [; ...] )
- Vzorce – Povinné. Vzorce, které se mají vyhodnotit současně. Zadejte alespoň dva vzorce.
Příklady
Rychlejší načítání dat
Vytvořte aplikaci a přidejte čtyři zdroje dat z Microsoft Dataverse, SQL Server nebo SharePoint.
V tomto příkladu se používají čtyři tabulky z ukázkové databáze Adventure Works v SQL Azure. Po vytvoření připojte databázi v Power Apps pomocí plně kvalifikovaného názvu serveru (například srvname.database.windows.net):
Přidejte ovládací prvek Button a nastavte jeho vlastnost OnSelect na tento vzorec.
ClearCollect( Product, '[SalesLT].[Product]' ); ClearCollect( Customer, '[SalesLT].[Customer]' ); ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ); ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )V prohlížeči Microsoft Edge nebo Google Chrome zapněte vývojářské nástroje, abyste mohli za běhu aplikace sledovat provoz v síti.
(volitelné) Pokud chcete, aby bylo toto porovnání co nezřetelnější, zapněte omezení využití sítě.
Podržte stisknutou klávesu Alt, vyberte tlačítko a sledujte provoz v síti.
Nástroje zobrazí čtyři žádosti prováděné v řadě, podobně jako na tomto příkladu. Skutečné časy byly odebrány, protože se výrazně liší. Na grafu vidíte, že každé volání se zahájí po dokončení předchozího:
Uložte, zavřete a znovu otevřete aplikaci.
Power Apps ukládají data do mezipaměti, takže opětovný výběr tlačítka nemusí podnítit čtyři nové žádosti. Kdykoliv chcete testovat výkon, je potřeba aplikaci zavřít a znovu otevřít. Pokud jste zapnuli omezení využití sítě, možná ho budete chtít až do dalšího testování vypnout.
Přidejte druhý ovládací prvek Button a do vlastnosti OnSelect nastavte tento vzorec:
Concurrent( ClearCollect( Product, '[SalesLT].[Product]' ), ClearCollect( Customer, '[SalesLT].[Customer]' ), ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ), ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' ) )Všimněte si, že jste přidali stejné volání ClearCollect na první tlačítko, ale jsou zabalené do Concurrent funkce a oddělené čárkami tentokrát.
V prohlížeči vymažte sledování sítě.
Pokud jste používali omezení využití sítě, znovu je zapněte.
Podržte stisknutou klávesu Alt, vyberte druhé tlačítko a sledujte provoz v síti.
Nástroje zobrazí čtyři žádosti prováděné souběžně, podobně jako na tomto příkladu. Znovu jsme odebrali skutečné časy, protože se výrazně liší. Graf ukazuje, že všechna volání začínají přibližně ve stejnou dobu a nečeká na dokončení předchozího volání:
Tyto grafy jsou založené na stejném škálování. Pomocí
funkce jste snížili celkovou dobu, po kterou tyto operace trvaly dokončení. Uložte, zavřete a znovu otevřete aplikaci.
Konflikt časování
Přidejte do aplikace připojení ke službě Microsoft Translator.
Přidejte ovládací prvek Text input a přejmenujte ho na TextInput1, pokud se jmenuje jinak.
Přidejte ovládací prvek Button a nastavte jeho vlastnost OnSelect na tento vzorec:
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 } )Přidejte ovládací prvek Data table a do vlastnosti Items nastavte Results.
Na kartě Vlastnosti v pravém podokně vyberte Upravit pole vedle popisku Pole a otevřete podokno Pole.
V seznamu polí zaškrtněte všechna pole – zobrazí se tak v tabulce dat.
(volitelné) Přetáhněte pole Input do horní části seznamu a pole FrenchFaster do dolní části seznamu.
V ovládacím prvku Text input zadejte nebo vložte frázi k překladu.
Podržte stisknutou klávesu Alt a vyplňte tabulku několika stisknutími tlačítka.
Časy se zobrazují v milisekundách.
Překlad do francouzštiny je někdy rychlejší než do němčiny a obráceně. Oba začínají ve stejnou dobu, ale jedna se vrátí před druhou z různých důvodů, včetně latence sítě a zpracování na straně serveru.
Pokud by aplikace závisela na dokončení některého z překladů, došlo by ke konfliktu časování. Power Apps naštěstí označí příznakem většinu závislostí v časování, které je možné detekovat.