Истовремена функција
Односи се на: Цанвас апликације Апликације засноване на моделу
Израчунава више формула истовремено.
Опис
Функција Concurrent омогућава истовремено израчунавање више формула наведених у оквиру истог својства ако имају конектор или Dataverse позиве. Обично се више формула израчунава ланчаним повезивањем оператером ; (тачка и зарез), који израчунава сваку формулу секвенцијално. Функцијом Concurent, апликација ће истовремено израчунати све формуле унутар својства чак и након коришћења оператора „;“. Ово паралелно извршавање ће помоћи корисницима да мање чекају на исти резултат.
У својству 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 само у формулама понашања.
Синтакса
Истовремено ( ФормулаКСНУМКС , ФормулаКСНУМКС [, ...] )
- Формуле – Обавезно. Формуле за истовремено израчунавање. Морате да наведете најмање две формуле.
Примери
Учитавање података брже
Направите апликацију и додајте из четири извора података из Microsoft Dataverse, SQL Server или SharePoint.
Овај пример користи четири табеле из пример базе података Adventure Works у SQL Azure. Након што креирате базу података, повежите се са њом из Power Apps користећи у потпуности квалификовано име сервера (на пример, srvname.database.windows.net):
Додајте контролу Button и подесите њено својство OnSelect према овој формули:
ClearCollect( Product, '[SalesLT].[Product]' ); ClearCollect( Customer, '[SalesLT].[Customer]' ); ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ); ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
У Microsoft Edge или Google Chrome, укључите алатке за програмере да бисте пратили мрежни саобраћај док се апликација користи.
(опционално) Укључите мрежно ограничење да бисте преувеличали ефекте овог поређења.
Док држите тастер Alt, изаберите дугме, а затим пратите мрежни саобраћај.
Алатке приказују четири захтева извршена узастопце, слично овом примеру. Стварна времена су уклоњена јер ће се јако разликовати. Графикон показује да сваки позив почиње након завршетка предходног:
Сачувајте, затворите и поново отворите апликацију.
Power Apps кешира податке, тако да поновни одабир дугмета неће нужно изазвати четири нова захтева. Сваки пут када желите да тестирате перформансе, затворите и поново отворите апликацију. Ако сте укључили мрежно органичење, можда ћете желети да га искључите док не будете спремни за још један тест.
Додајте другу контролу Дугме и подесите нено својство OnSelect према овој формули:
Concurrent( ClearCollect( Product, '[SalesLT].[Product]' ), ClearCollect( Customer, '[SalesLT].[Customer]' ), ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ), ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' ) )
Имајте на уму да сте додали исте ClearCollect позиве на прво дугме, али овај пут су стављени у функцију Concurrent и раздвојени зарезима.
Испразните мрежни монитор у прегледачу.
Ако сте раније користили мрежно ограничење, поново га укључите.
Док држите тастер Alt, изаберите друго дугме, а затим пратите мрежни саобраћај.
Алатке приказују четири захтева извршена истовремено, слично овом примеру. Поново, стварна времена су уклоњена јер ће се јако разликовати. Графикон показује да сви позиви почињу отприлике у исто време и не чекају да се претходни заврши:
Ови графикони се заснивају на истој скали. Коришћењем Concurrent, преполовили сте укупан број времена потребних за завршетак ових операција.
Сачувајте, затворите и поново отворите апликацију.
Услов трке
Додајте везу са услугом Microsoft преводиоца у вашу апликацију.
Додајте контролу Унос текста и преименујте TextInput1 ако има другачије име.
Додајте контролу Дугме и подесите нено својство 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 } )
Додајте контролу Data table и подесите њено својство Ставке на Резултати.
На картици Својства у десном окну, изаберите Уређивање поља да бисте отворили окно Поља.
На листи поља, изаберите поље за потврду да бисте их све приказали у табели података.
(опционално) Превуците поље Улазни до врха листе и превуците поље FrenchFaster на дно листе.
У контроли Унос текста, унесите или налепите фразу за превођење.
Док држите тастер Alt притиснутим, изаберите тастер више пута да бисте испунили табелу.
Времена су приказана у милисекундама.
У неким је случајевима француски превод бржи од немачког, и обрнуто. Оба почињу у исто време, али један се враћа пре другог из различитих разлога, укључујући кашњење мреже и обраду на страни сервера.
Услов трке би се појавио ако апликација зависи од тога да се један превод први заврши. Срећом, Power Apps означава већину зависности трајања које може да открије.