Zdieľať cez


Funkcia Concurrent

Vzťahuje sa na: Aplikácie plátna Modelom riadené aplikácie

Hodnotí viacero vzorcov súbežne.

Description

Funkcia Concurrent umožňuje vyhodnocovať viacero vzorcov zadaných v rámci tej istej vlastnosti súčasne, ak majú konektor alebo volania Dataverse. Za normálnych okolností sa viaceré vzorce hodnotia reťazením pomocou operátora ; (dvojbodka), kde sa každý vzorec vyhodnocuje v príslušnom poradí. S funkciou Concurrent aplikácia vyhodnotí všetky vzorce v rámci vlastnosti súbežne aj po použití operátora ; . Vďaka tejto súbežnosti môžu používatelia na rovnaký výsledok čakať kratšie.

Vo vlastnosti OnStart aplikácie môžete zvýšiť Concurrent výkon pri načítavaní údajov aplikáciou. Ak sa volania údajov začnú až potom, ako sa predchádzajúce volania dokončia, čas čakania aplikácie zodpovedá súčtu všetkých časov žiadostí. Ak volania údajov začnú v tom istom čase, aplikácia musí iba počkať, kým uplynutie najdlhší čas požiadavky. Webové prehliadače často zlepšujú výkon súbežným vykonávaním sieťových volaní.

Poradie, v ktorom vzorce v rámci Concurrent funkcie začínajú a končia vyhodnotenie, nie je možné predvídať. Vzorce vo funkcii Concurrent by nemali obsahovať závislosti od iných vzorcov v rámci tej istej Concurrent funkcie a v prípade pokusu sa v službe Power Apps zobrazí chyba. V rámci funkcie môžete bezpečne vytvoriť závislosti od vzorcov mimo Concurrent funkcie, pretože sa dokončia ešte pred spustením Concurrent funkcie. Vzorce za funkciou Concurrent môžu bezpečne vytvárať závislosti od vzorcov v reťazci, pretože všetky sa dokončia pred Concurrent dokončením funkcie a jej prechodom na ďalší vzorec v reťazci (ak používate operátor ; ). Ak chcete volať funkcie alebo metódy služby, ktoré majú vedľajšie účinky, dávajte si pozor na drobné závislosti v poradí.

Vzorce môžete reťaziť pomocou operátora ; v rámci argumentu do Concurrentfunkcie . Napríklad Concurrent( Set( a, 1 ); Set( b, a+1 ), Set( x, 2 ); Set( y, x+2 ) ) vyhodnocuje Set( a, 1 ); Set( b, a+1 ) súbežne s set( x, 2 ); Set( y, x+2 ). V tomto prípade sú závislosti vo vzorcoch v poriadku: a sa nastaví skôr ako b a x sa nastaví skôr ako y.

V závislosti od zariadenia alebo prehliadača, v ktorom je aplikácia spustená, môže byť súbežne vyhodnotených iba niekoľko vzorcov. Concurrent použije dostupné možnosti a neskončí, kým nebudú všetky vzorce vyhodnotené.

Ak povolíte funkciu Správa chýb na úrovni vzorca (v rozšírených nastaveniach), vráti sa prvá chyba v argumente z Concurrent; v opačnom prípade sa vráti prázdna hodnota . Ak sú všetky vzorce správne, vráti sa hodnota pravda. Ak jeden vzorec nie je správny, zvyšok vzorca sa zastaví, ale ostatné vzorce sa budú aj naďalej vyhodnocovať.

Môžete ich použiť Concurrent iba vo vzorcoch správania.

Syntax

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

  • Vzorce – povinné. Vzorce, ktoré sa majú súbežne vyhodnotiť. Treba zadať aspoň dva vzorce.

Príklady

Rýchlejšie načítavanie údajov

  1. Vytvorte aplikáciu a pridajte štyri zdroje údajov z Microsoft Dataverse, SQL Server alebo SharePoint.

    V tomto príklade sa používajú štyri tabuľky zo vzorovej databázy Adventure Works v službe SQL Azure. Po vytvorení databázy sa k nej pripojte zo služby Power Apps pomocou úplného názvu servera (napríklad srvname.database.windows.net):

    Pripojenie k databáze Adventure Works v službe Azure.

  2. Pridajte ovládací prvok Button a nastavte jeho vlastnosť OnSelect na tento vzorec:

    ClearCollect( Product, '[SalesLT].[Product]' );
    ClearCollect( Customer, '[SalesLT].[Customer]' );
    ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' );
    ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
    
  3. V prehliadači Microsoft Edge alebo Google Chrome zapnite vývojárske nástroje, aby ste počas spustenia aplikácie mohli sledovať sieťový prenos.

  4. (voliteľné) Ak chcete, aby bolo porovnanie čo najvýraznejšie, zapnite obmedzenie využitia siete.

  5. Podržte stlačený kláves Alt, vyberte tlačidlo a potom sledujte sieťový prenos.

    V nástrojoch sa zobrazia štyri žiadosti, vykonané postupne, podobne ako v nasledujúcom príklade. Skutočné časy sa odstránili, pretože by sa výrazne odlišovali. V grafe vidíte, že jednotlivé volania začali až po ukončení toho predchádzajúceho:

    Časový graf štyroch sieťových žiadostí, ktoré začali až po ukončení tej predchádzajúcej, a ktoré pokrývajú celé časové obdobie.

  6. Aplikáciu uložte, zavrite a opätovne otvorte.

    Služba Power Apps ukladá údaje do medzipamäte, takže opätovný výber tlačidla automaticky nevytvorí štyri nové žiadosti. Vždy, keď budete chcieť otestovať výkon, zavrite a opätovne otvorte aplikáciu. Ak ste zapli obmedzenie využitia siete, možno ho budete chcieť až do ďalšieho testovania vypnúť.

  7. Pridajte druhý ovládací prvok Tlačidlo a nastavte jeho vlastnosť OnSelect na tento vzorec:

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

    Všimnite si, že ste pridali rovnaké volania ClearCollect ako k prvému tlačidlu Concurrent , ale tentokrát sú zabalené do funkcie a oddelené čiarkami.

  8. Vymažte sledovanie siete v prehliadači.

  9. Ak ste používali obmedzenie využitia siete, opätovne ho zapnite.

  10. Podržte stlačený kláves Alt, vyberte druhé tlačidlo a potom sledujte sieťový prenos.

    V nástrojoch sa zobrazia štyri žiadosti vykonané súbežne, podobne ako v nasledujúcom príklade. Skutočné časy sa opätovne odstránili, pretože by sa výrazne odlišovali. Graf ukazuje, že všetky volania začínajú približne v rovnakom čase a nečakajú, kým sa predchádzajúce volania skončia:

    Časový graf štyroch sieťových žiadostí, všetky štyri začínajú súbežne a trvajú asi polovicu časového obdobia.

    Tieto grafy sú založené na rovnakej mierke. Pomocou funkcie Concurrentste znížili celkový čas potrebný na dokončenie týchto operácií na polovicu.

  11. Aplikáciu uložte, zavrite a opätovne otvorte.

Súbeh

  1. Pridajte do aplikácie pripojenie k službe Microsoft Translator.

  2. Pridajte ovládací prvok Text input, a ak má iný názov, premenujte ho na TextInput1.

  3. Pridajte ovládací prvok Tlačidlo a nastavte jeho vlastnosť 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
        }
    )
    
  4. Pridajte ovládací prvok Data table a nastavte jeho vlastnosť Items na hodnotu Results.

  5. Na karte Vlastnosti na table vpravo vyberte položku Upraviť polia, čím otvoríte tablu Polia.

  6. V zozname polí začiarknite políčko pre všetky polia – zobrazia sa v tabuľke údajov.

  7. (voliteľné) Presuňte pole Input do hornej časti zoznamu a pole FrenchFaster presuňte do dolnej časti zoznamu.

    Zoznam polí v kolekcii Result (Výsledky).

  8. Do ovládacieho prvku Text input zadajte alebo prilepte slovné spojenie, ktoré sa má preložiť.

  9. Podržte stlačený kláves Alt a vyplňte tabuľku niekoľkonásobným výberom tlačidla.

    Časy sa zobrazujú v milisekundách.

    Zobrazenie tabuľky údajov s výsledkami prekladu reťazca

    V niektorých prípadoch je francúzsky preklad rýchlejší ako nemecký a inokedy je to opačne. Oba sa začnú v rovnakom čase, ale jeden vráti výsledok skôr. Môže to mať rôzne dôvody, ako napríklad časové oneskorenie siete alebo spracovanie na strane servera.

    Súbeh sa môže vyskytnúť vtedy, ak aplikácia závisí od toho, aby jeden preklad skončil skôr. Služba Power Apps však našťastie označí príznakom väčšinu závislostí časovania, ktoré je možné zistiť.