Vienlaicīga funkcija

Attiecas uz: Pamatnes programmām Modeļa vadītas programmas

Vienlaicīgi novērtētas vairākas formulas vienu ar otru.

Apraksts

Ja funkcija Concurrent pieļauj vairākas formulas, kas norādītas vienā rekvizītā, kas jānovērtē vienlaicīgi, ja tām ir savienotājs vai Dataverse izsaukumi. Parasti vairākas formulas tiek novērtētas, saķēdējot tās kopā ar (semikols) operatoru, kas katru novērtē atsevišķi pēc kārtas. Ar funkciju Concurrent programma novērtē visas rekvizīta formulas pēc kārtas pat pēc ; operatora lietošanas. Šis secīgums palīdz lietotājiem gaidīt īsāku laiku uz vienu un to pašu rezultātu.

Programmas rekvizītā OnStart atlasiet Concurrent, lai uzlabotu veiktspēju, programmai ielādējot datus. Ja datu izsaukumi netiek palaisti līdz iepriekšējo izsaukumu beigām, programmai ir jāgaida uz visu pieprasījuma laiku summu. Ja datu izsaukumi sākas vienlaicīgi, programmai ir jāgaida vienīgi ilgākais pieprasījuma laiks. Tīmekļa pārlūki bieži vien uzlabo sniegumu, tīkla izsaukumus veicot vienlaicīgi.

Nevar paredzēt secību, kurā formulas funkcijā Concurrent sāk un beidz novērtējumu. Formulām funkcijā Concurrent nevajadzētu saturēt atkarības no citām formulām tajā pašā funkcijā Concurrent, un, ja mēģināt, Power Apps rāda kļūdu. Programmā varat droši paņemt atkarības formulās ārpus funkcijas Concurrent, jo tās tiks pabeigtas pirms tiek palaista funkcija Concurrent. Formulas pēc funkcijas Concurrent var droši ņemt atkarības no formulām tajā: tās visas tiks pabeigtas, pirms funkcija Concurrent būs beigusi darbu, un pāries uz nākamo formulu ķēdē (ja izmantojat operatoru ; ). Uzmanieties no smalkām secību atkarībām, ja izsaucat funkcijas vai pakalpojumu metodes ar blaknēm.

Varat saķēdēt formulas kopā, izmantojot ; operatoru argumentā funkcijai Concurrent. Piemēram, Concurrent( Set( a, 1 ); Set( b, a+1 ), Set( x, 2 ); Set( y, x+2 ) ) novērtē Set( a, 1 ); Set( b, a+1 ) vienlaicīgi ar Set( x, 2 ); Set( y, x+2 ). Šajā gadījumā atkarības formulās ir smalkas: a tiks iestatīta pirms b, un x tiks iestatīta pirms y.

Atkarībā no ierīces vai pārlūka, kurā tiek palaista programma, patiesībā vienīgi dažas komandas varētu tikt novērtētas vienlaicīgi. Funkcija Concurrent izmanto pieejamās iespējas un nebeigs darbu, līdz nav novērtētas visas formulas.

Ja iespējojat Formulas līmeņa kļūdu pārvaldība (papildu iestatījumos), pirmā kļūda, kas parādās argumentu secībā, tiek atgriezta no funkcijas Concurrent; pretējā gadījumā tiek atgriezta tukša vērtība. Ja visas formulas ir veiksmīgas, tiek atgriezta vērtība true. Ja viena formula neizdodas, pārējā šīs formulas daļa apstājas, taču citas formulas turpina vērtēšanu.

Concurrent varat izmantot vienīgi uzvedības formulās.

Sintakse

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

  • Formula(s) — Obligāti. Formulas, kuras jānovērtē vienlaicīgi. Ir jānodrošina vismaz divas formulas.

Piemēri

Ātrāka datu ielāde

  1. Izveidojiet programmu un pievienojiet četrus datu avotus no Microsoft Dataverse, SQL Server vai SharePoint.

    Šajā piemērā tiek izmantotas četras tabulas no parauga Adventure Works datu bāzes pakalpojumā SQL Azure. Pēc datu bāzes izveidošanas, savienojiet to ar Power Apps, izmantojot pilnībā kvalificētu servera nosaukumu (piemēram, srvname.database.windows.net):

    Izveidot savienojumu ar Adventure Work datu bāzi pakalpojumā Azure.

  2. Pievienojiet vadīklu Button un iestatiet tās rekvizītu OnSelect uz tālāk norādīto formulu.

    ClearCollect( Product, '[SalesLT].[Product]' );
    ClearCollect( Customer, '[SalesLT].[Customer]' );
    ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' );
    ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
    
  3. Programmā Microsoft Edge vai Google Chrome ieslēdziet izstrādātāju rīkus, lai uzraudzītu tīkla plūsmu, kamēr darbojas programma.

  4. (neobligāti) Ieslēdziet tīkla ierobežošanu, lai pastiprinātu šī salīdzinājuma iedarbību.

  5. Turot nospiestu Alt taustiņu, atlasiet pogu un pēc tam uzraugiet tīkla plūsmu.

    Rīks rāda, ka četri pieprasījumi tiek izpildīti sērijā, līdzīgi kā šajā piemērā. Faktiskie laiki ir noņemti, jo tie ievērojami atšķirsies. Grafikā redzams, ka katrs izsaukums sākas pēc pēdējā beigām:

    Četru tīkla pieprasījumu laika grafiks, no kuriem katrs sākas pēc iepriekšējā beigām, aptverot visu laika periodu.

  6. Saglabājiet, aizveriet un vēlreiz atveriet savu programmu.

    Power Apps saglabā kešatmiņā datus, tāpēc pogas atkārtota atlase ne vienmēr radīs četrus jaunus pieprasījumus. Katru reizi, kad vēlaties pārbaudīt veiktspēju, aizveriet un atkārtoti atveriet programmu. Ja ieslēdzāt tīkla ierobežošanu, iespējams, vēlēsities to izslēgt, līdz būsit gatavi citai pārbaudei.

  7. Pievienojiet otro vadīklu Button un iestatiet tās rekvizītu OnSelect uz šo formulu:

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

    Ņemiet vērā, ka pirmajai pogai pievienojāt tos pašus ClearCollect izsaukumus, taču tie ir iekļauti funkcijā Concurrent, un šoreiz tie ir komatatdalīti.

  8. Pārlūkā notīriet tīkla monitoru.

  9. Ja pirms tam izmantojāt tīkla ierobežošanu, vēlreiz to ieslēdziet.

  10. Turot nospiestu Alt taustiņu, atlasiet otro pogu un pēc tam uzraugiet tīkla plūsmu.

    Rīks rāda, ka četri pieprasījumi tiek izpildīti vienlaicīgi, līdzīgi kā šajā piemērā. Faktiskie laiki atkal ir noņemti, jo tie ievērojami atšķirsies. Grafikā redzams, ka visi izsaukumi sākas aptuveni vienlaicīgi un negaida uz iepriekšējā pabeigšanu:

    Laika grafiks ar četriem tīkla pieprasījumiem, visiem četriem sākoties kopā un aizņemot aptuveni pusi laika perioda.

    Šie grafiki ir balstīti vienā un tajā pašā mērogā. Lietojot funkciju Concurrent jūs uz pusi samazinājāt kopējo laika daudzumu, kas bija nepieciešams šo operāciju pabeigšanai.

  11. Saglabājiet, aizveriet un vēlreiz atveriet savu programmu.

Nosacījums Race

  1. Pievienojiet savienojumu Microsoft Translator pakalpojumam savā programmā.

  2. Pievienojiet Teksta ievades vadīklu un pārdēvējiet to par TextInput1, ja tai ir cits nosaukums.

  3. Pievienojiet vadīklu Poga un iestatiet tās rekvizītu OnSelect uz šo 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
        }
    )
    
  4. Pievienojiet vadīklu Data table un iestatiet tās rekvizītu Elementi uz Rezultāti.

  5. Labās rūts cilnē Rekvizīti atlasiet vienumu Rediģēt laukus, lai atvērtu rūti Lauki.

  6. Lauku sarakstā atzīmējiet izvēles rūtiņu katram laukam, lai tos rādītu datu tabulā.

  7. (neobligāti) Velciet Ievades lauku uz saraksta augšpusi un velciet lauku FrenchFaster uz saraksta apakšpusi.

    Lauku saraksts Rezultātu kolekcijā.

  8. Teksta ievades vadīklā ierakstiet vai ielīmējiet tulkojamo frāzi.

  9. Turot nospiestu Alt taustiņu, atlasiet pogu vairākas reizes, lai aizpildītu tabulu.

    Laiki tiek rādīti milisekundēs.

    Datu tabulas parādīšana, kurā ir virknes

    Dažos gadījumos franču valodas tulkojums ir ātrāk nekā vācu tulkojums, un otrādi. Abi sākas vienlaikus, taču viens atgriežas pirms otra dažādu iemeslu dēļ, tostarp, tīkla latentuma un servera puses apstrādes dēļ.

    Race nosacījums parādītos, ja programma būtu atkarīga no tulkojuma, kurš beidzas pirmais. Par laimi, Power Apps brīdina par vairumu laika atkarību, kuras tā var noteikt.