Бөлісу құралы:


Бір мезгілде жұмыс істейтін функция

Қолданылады: Canvas қолданбалары Үлгіге негізделген қолданбалар

Бірнеше формуланы бір бірімен бір уақытта есептейді.

Сипаттама

Concurrent функциясы коннекторы немесе Dataverse шақырулары болса, бір сипатта көрсетілген бірнеше формуланы бір уақытта бағалауға мүмкіндік береді. Әдетте, бірнеше формула әр формуланы ретпен бағалайтын ; (нүктелі үтір) операторы арқылы тізбектеу арқылы есептеледі. Concurrent функциясымен бағдарлама сипаттағы барлық формулаларды пайдаланғаннан кейін де бір уақытта бағалайды; оператор. Бұл параллельдік пайдаланушыларға бірдей нәтижені аз күтуге көмектеседі.

Бағдарламаның деректерді жүктеу өнімділігін жақсарту үшін бағдарламаның OnStart сипатында Concurrent функциясын пайдаланыңыз. Алдыңғы шақырулар аяқталғанша деректерді шақырулар басталмаса, бағдарлама барлық сұраулар санының қосындысын күтуі керек. Деректерді шақырулар бір уақытта басталса, бағдарлама ең ұзын сұрау уақытын ғана күтуі керек. Көбінесе, веб-браузерлер желі қоңырауларын бір уақытта орындау арқылы өнімділікті жақсартады.

Concurrent функциясындағы формулалар есептеуді қай ретпен бастайтынын және аяқтайтынын болжау мүмкін емес. Concurrent функциясындағы формулалар бір Concurrent функциясындағы басқа формулаларға тәуелділіктерді қамтымауы керек, бұған әрекеттеніп көрсеңіз Power Apps қатені көрсетеді. Ішінде, формулаларға тәуелділіктерді Concurrent функциядан тыс қауіпсіз алуға болады, өйткені олар Concurrent функциясы басталмай тұрып аяқталады. Concurrent функциясынан кейінгі формулалар формулаларға тәуелділіктерді ішке қауіпсіз қабылдай алады: олардың барлығы Concurrent функциясы аяқталып, тізбектегі келесі формулаға өтпей тұрып аяқталады (; операторын пайдалансаңыз). Жанама әсерлері бар функцияларды немесе қызметтік әдістерді шақырып жатсаңыз, шағын рет тәуелділіктерін қадағалаңыз.

Concurrent аргументінің ішінде ; операторы арқылы формулаларды тізбектеуге болады. Мысалы, Concurrent( Set( a, 1 ); Set( b, a+1 ), Set( x, 2 ); Set( y, x+2 ) ) өрнегі Set( a, 1 ); Set( b, a+1 ) өрнегін Set( x, 2 ); Set( y, x+2 ) өрнегімен бір уақытта есептейді. Бұл жағдайда, формулалардағы тәуелділіктер ештеңе етпейді: a мәні b мәнінен бұрын орнатылады әрі x мәні y мәнінен бұрын орнатылады.

Бағдарлама жұмыс істеп жатқан құрылғыға немесе шолғышқа байланысты, аз ғана формулаларды іс жүзінде бір уақытта есептеуге болады. Concurrent функциясы қолжетімді мүмкіндіктерді пайдаланады және барлық формулалар есептелгенше аяқталмайды.

Формула деңгейінде қателерді басқару (кеңейтілген параметрлерде) параметрін қоссаңыз, Concurrent функциясынан аргументтер ретінде кездескен бірінші қате қайтарылады; әйтпесе, blank мәні қайтарылады. Егер барлық формулалар сәтті болса, true мәні қайтарылады. Егер бір формула сәтсіз аяқталса, бұл формуланың қалған бөлігі тоқтайды, бірақ басқа формулаларды есептеу жалғасады.

Concurrent функциясын тек мінез-құлық формулаларында пайдалануға болады.

Синтаксис

Concurrent( Формула1, Формула2 [, ...] )

  • Formula(s) – Міндетті. Бір уақытта есептелетін формулалар. Сіз кемінде екі формуланы беруіңіз керек.

Мысалдар

Деректерді тезірек жүктеу

  1. Бағдарлама жасаңыз және Microsoft Dataverse, SQL Server немесе SharePoint ішінен төрт деректер көзін қосыңыз.

    Бұл мысалда SQL Azure ішіндегі үлгі Adventure Works дерекқорынан төрт кесте пайдаланылады. Жасағаннан кейін дерекқорға Power Apps ішінен толығымен нақтыланған сервер атауын (мысалы, srvname.database.windows.net) пайдаланып қосылыңыз:

    Azure ішіндегі Adventure Works дерекқорына қосылыңыз.

  2. Button басқару элементін қосыңыз және оның OnSelect сипатын мына формулаға орнатыңыз:

    ClearCollect( Product, '[SalesLT].[Product]' );
    ClearCollect( Customer, '[SalesLT].[Customer]' );
    ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' );
    ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
    
  3. Бағдарлама жұмыс істеп тұрғанда желі трафигін бақылау үшін Microsoft Edge немесе Google Chrome шолғышында әзірлеуші құралдарын қосыңыз.

  4. (Міндетті емес) Осы салыстырудың әсерлерін көбейтіп көрсету үшін желіні реттеуді қосыңыз.

  5. Alt пернесін ұстап тұрып, түймешікті таңдаңыз, содан кейін желі трафигін бақылаңыз.

    Бұл құралдар осы мысалға ұқсас, қатарынан орындалған төрт сұрауды көрсетеді. Іс жүзіндегі уақыттар жойылды, өйткені олар қатты өзгеріп отырады. Графикте әр шақыру соңғысы аяқталғаннан кейін басталатыны көрсетілген:

    Төрт желі сұрауының уақыт графигі, әрқайсысы соңғысы аяқталғаннан кейін басталады, уақыттың бүкіл аралығын қамтиды.

  6. Сақтап, бағдарламаны жауып, қайта ашыңыз.

    Power Apps деректерді кэштейді, осылайша түймешікті қайта басу міндетті түрде төрт жаңа сұрауды тудырмайды. Өнімділікті сынағыңыз келген сайын бағдарламаны жауып, қайта ашыңыз. Желіні реттеуді қоссаңыз, тағы бір сынаққа дайын болғанша оны өшіру керек.

  7. Екінші Button басқару элементін қосыңыз және оның OnSelect сипатын мына формулаға орнатыңыз:

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

    Бірінші түймешікке бірдей ClearCollect шақыруларын қосқаныңызға, бірақ бұл кезде олар Concurrent функциясына оралғанына және үтірлермен бөлінгеніне назар аударыңыз.

  8. Шолғыштағы желі мониторын тазалаңыз.

  9. Бұрын желіні реттеуді пайдаланып жүрген болсаңыз, оны қайта қосыңыз.

  10. Alt пернесін ұстап тұрып, екінші түймешікті таңдаңыз, содан кейін желі трафигін бақылаңыз.

    Бұл құралдар осы мысалға ұқсас, бір уақытта орындалған төрт сұрауды көрсетеді. Іс жүзіндегі уақыттар мұнда да жойылды, өйткені олар қатты өзгеріп отырады. График барлық шақыруар шамамен бір уақытта басталатынын және алдыңғысының аяқталуын күтпейтінін көрсетеді:

    Төрт желі сұрауының уақыт графигі, төртеуінің барлығы бірге басталады, уақыт аралығының шамамен жартысын қамтиды.

    Бұл графиктер бірдей масштабқа негізделген. Concurrent функциясын пайдалану арқылы сіз бұл әрекеттерді аяқтауға кететін уақыт мөлшерін жартыға азайттыңыз.

  11. Сақтап, бағдарламаны жауып, қайта ашыңыз.

Жарыс жағдайы

  1. Бағдарламаға Microsoft Translator қызметімен байланысты қосыңыз.

  2. Мәтінді енгізу басқару элементін қосыңыз және оның аты басқа болса, оны МәтіндіЕнгізу1 деп қайта атаңыз.

  3. Түйме басқару элементін қосыңыз және оның OnSelect сипатын мына формулаға орнатыңыз:

    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. Data table басқару элементін қосыңыз және оның Элементтер сипатын Нәтижелер ішіне қосыңыз.

  5. Оң тақтаның Сипаттар қойыншасында Өрістер тақтасын ашу үшін Өрістерді өңдеу пәрменін таңдаңыз.

  6. Өрістер тізімінде, барлығын деректер кестесінде көрсету үшін әр өрістің құсбелгісін қойыңыз.

  7. (міндетті емес) Енгізу өрісін тізімнің жоғарғы жағына сүйреңіз және FrenchFaster өрісін тізімнің төменгі жағына сүйреңіз.

    Нәтижелер жинағындағы өрістер тізімі.

  8. Мәтінді енгізу басқару элементінде аударатын тіркесті теріңіз немесе қойыңыз.

  9. Alt пернесін басып тұрып, кестені толтыру үшін түймешікті бірнеше рет басыңыз.

    Уақыттар миллисекундтар түрінде көрсетіледі.

    «Hello World» жолын француз және неміс тілдеріне аудару нәтижелерін қамтитын деректер кестесін көрсету. Кейде француз аудармасы неміс тіліне қарағанда жылдамырақ, ал кейде керісінше.

    Кейбір жағдайларда француз тіліне аудару неміс тіліне аударудан тезірек және керісінше болып тұрады. Екеуі де бір уақытта басталады, бірақ әртүрлі себептермен, соның ішінде, желінің кешігуіне және сервер тарапында өңдеуге байланысты екіншісінен бұрын оралады.

    Бағдарлама бір аударманың бірінші аяқталуына тәуелді болғанда, жарыс жағдайы орын алатын еді. Бақытымызға орай, Power Apps өзі анықтай алатын уақыт тәуелділіктерінің көпшілігіне жалаушалар қояды.