Concurrent Функцију

Односи се на: Цанвас апликације - Апликације засноване на моделу

Израчунава више формула истовремено.

Опис

Функција Concurrent омогућава да се више формула наведених у истој особини процени у исто време ако имају конектор или Датаверсе позиве. Обично се више формула израчунава ланчаним повезивањем оператером ; (тачка и зарез), који израчунава сваку формулу секвенцијално. Са функцијом Concurrent , апликација ће истовремено проценити све формуле унутар својства чак и након коришћења ; оператор. Ова конкурентност помаже корисницима да мање чекају на исти резултат.

У својству ОнСтарт ваше апликације, користите Concurrent за побољшање перформанси када апликација учитава податке. Када позиви за податке не почињу док се претходни позиви не заврше, апликација мора да сачека збир свих времена захтева. Ако се позиви за податке покрену у исто време, апликација треба да сачека само најдуже време захтева. Веб-прегледачи често побољшавају перформансе паралелним обрађивањем мрежних позива.

Не можете предвидети редослед којим формуле унутар Concurrent функције почињу и завршавају евалуацију. Формуле унутар Concurrent функције не би требало да садрже зависности од других формула унутар исте Concurrent функције, а Повер Аппс приказује грешку ако покушате. Изнутра можете безбедно узети зависности од формула изван Concurrent функције јер се завршавају пре Concurrent почетка функције. Формуле након Concurrent функције могу безбедно да преузму зависности од формула унутар: све ће се завршити пре него што Concurrent се функција заврши и пређе на следећу формулу у ланцу (ако користите ; оператор ). Пазите на суптилне зависности од редоследа ако позивате функције или методе услуга који имају нуспојаве.

Можете ланчане формуле заједно са ; оператором унутар аргумента у Concurrent. На пример, Concurrent( Сет( а, 1 ); Сет( б, а + 1 ), Сет( x, 2 ); Сет( y, x + 2 ) ) процењује Сет( а, 1 ); Сет( б, а + 1 ) истовремено са Сет( x, 2 ); Сет ( y, x + 2 ) . У овом случају, зависности унутар формула су у реду: a ће бити постављена пре b, а x ће бити постављена пре y.

У зависности од уређаја или прегледача у коме се апликација користи, само неколико формула се може истовремено израчунавати. Concurrent користи доступне могућности и неће завршити док се не процене све формуле.

Ако омогућите управљање грешкама на нивоу формуле (у напредним подешавањима), прва грешка на коју се наиђе у редоследу аргумената се враћа из Concurrent; у супротном, празно се враћа. Ако су све формуле успешне, тачно је враћена. Ако једна формула не успе, остатак те формуле престаје, али остале формуле настављају с израчунавањем.

Можете користити Concurrent само у формулама понашања .

Синтакса

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

  • Формуле – Обавезно. Формуле за истовремено израчунавање. Морате да наведете најмање две формуле.

Примери

Учитавање података брже

  1. Направите апликацију и додајте из четири извора података из Microsoft Dataverse, SQL Server или SharePoint.

    Овај пример користи четири табеле из пример базе података Adventure Works у SQL Azure. Након што креирате базу података, повежите се са њом из Power Apps користећи у потпуности квалификовано име сервера (на пример, srvname.database.windows.net):

    Повезивање са Adventure Works базом података у услузи Azure.

  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. Додајте другу контролу Дугме и подесите нено својство OnSelect према овој формули:

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

    Имајте на уму да сте додали исте ЦлеарЦоллецт позиве на прво дугме, али су умотани у Concurrent функцију и раздвојени зарезима овај пут.

  8. Испразните мрежни монитор у прегледачу.

  9. Ако сте раније користили мрежно ограничење, поново га укључите.

  10. Док држите тастер Alt, изаберите друго дугме, а затим пратите мрежни саобраћај.

    Алатке приказују четири захтева извршена истовремено, слично овом примеру. Опет , стварна времена су уклоњена јер се јако разликују. Графикон показује да сви позиви почињу отприлике у исто време и не чекају да се заврши претходни:

    Временски графикон од четири мрежна захтева, од којих сва четири почињу заједно, покривају око половине временског распона.

    Ови графикони се заснивају на истој скали. Коришћењем Concurrent, преполовили сте укупну количину времена које је требало да се ове операције заврше.

  11. Сачувајте, затворите и поново отворите апликацију.

Услов трке

  1. Додајте везу ка услузи Microsoft преводилац у вашу апликацију.

  2. Додајте контролу Унос текста и преименујте TextInput1 ако има другачије име.

  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 притиснутим, изаберите тастер више пута да бисте испунили табелу.

    Времена су приказана у милисекундама.

    Приказ табеле података која садржи резултате превођења стринга

    У неким је случајевима француски превод бржи од немачког, и обрнуто. Оба почињу у исто време, али се један враћа пре другог из различитих разлога, укључујући кашњење мреже и обраду на серверу.

    Услов трке би се појавио ако апликација зависи од тога да се један превод први заврши. Срећом, Power Apps означава већину зависности трајања које може да открије.