Nata
Norint pasiekti šį puslapį, reikalingas leidimas. Galite pabandyti prisijungti arba pakeisti katalogus.
Norint pasiekti šį puslapį, reikalingas leidimas. Galite pabandyti pakeisti katalogus.
Taikoma: Drobės programėlės
Modeliu pagrįstos programėlės
Tuo pačiu metu vieną su kita lygina kelias formules.
Aprašą
Funkcija Concurrent leidžia tuo pačiu metu įvertinti kelias toje pačioje ypatybėje nurodytas formules, jei jos turi jungtį arba "Dataverse" iškvietimus. Įprastai kelios formulės yra įvertinamos jas sujungiant į grandinę ; (kabliataškio) operatoriumi, kuris nuosekliai įvertina kiekvieną formulę. Concurrent Naudojant funkciją, programa įvertina visas ypatybės formules vienu metu net panaudojus operatorių ;. Šis sutapimas padeda vartotojams mažiau laukti to paties rezultato.
Savo programos ypatybėje OnStart naudokite Concurrent , kad pagerintumėte efektyvumą, kai programa įkelia duomenis. Kai duomenų iškvietos nepradedamos tol, kol nebaigiamos ankstesnės iškvietos, programa turi laukti visų užklausų trukmių sumos. Jei duomenų iškvietos pradedamos tuo pačiu metu, programai reikia laukti tik ilgiausios užklausos trukmės. Žiniatinklio naršyklės efektyvumą dažnai padidina tinklo iškvietas atlikdamos tuo pačiu metu.
Negalite numatyti, kokia tvarka formulės Concurrent funkcijos pradžios ir pabaigos įvertinime. Formulėse, Concurrent esančiose funkcijoje, neturėtų būti priklausomybės nuo kitų tos pačios Concurrent funkcijos formulių, o "Power Apps" pateikia klaidą, jei bandysite. Iš šalies galite saugiai naudoti priklausomybes nuo formulių, nepriklausančių funkcijai Concurrent , nes jos užbaigiamos prieš Concurrent pradedant funkciją. Formulės po Concurrent funkcijos gali saugiai priklausyti nuo formulių, esančių: jos bus užbaigtos prieš Concurrent baigiant funkciją ir pereis prie kitos formulės grandinėje (jei naudojate operatorių ; ). Jei iškviečiate funkcijas ar tarnybų metodus, turinčius šalutinį poveikį, atidžiai stebėkite subtilias tvarkos priklausomybes.
Galite susieti formules su operatoriumi ; argumente į Concurrent. Pavyzdžiui, Concurrent( Set( a, 1 ); Set( b, a+1 ), Set( x, 2 ); Set( y, x+2 ) įvertina Set( a, 1 ); Set( b, a +1 ) vienu metu su Set( x, 2 ); Set( y, x+2 ). Šiuo atveju formulių priklausomybės yra tinkamos: a bus nustatyta prieš b, o x bus nustatyta prieš y.
Tuo pačiu metu faktiškai galima įvertinti tik keletą formulių – tai priklauso nuo įrenginio arba naršyklės, kur veikia programa. Concurrent naudoja galimas galimybes ir nebaigia tol, kol nebus įvertintos visos formulės.
Jei įgalinsite formulės lygio klaidų valdymą (išplėstiniuose parametruose), pirmoji argumentų tvarka aptikta klaida bus grąžinta iš Concurrent; kitu atveju bus pateikta tuščia . Jei visos formulės yra sėkmingos, pateikiama true. Jei viena formulė nesėkminga, likusi tos formulės dalis sustabdoma, tačiau kitos formulės tęsia vertinimo procesą.
Galite naudoti Concurrent tik veikimo būdo formulėse.
Sintaksė
Concurrent( Formulė1, Formulė2 [, ...] )
- Formulės – būtina. Formulės, kurias reikia įvertinti tuo pačiu metu. Turite nurodyti bent dvi formules.
Pavyzdžiai
Greitesnis duomenų įkėlimas
Sukurkite programą ir įtraukite keturis duomenų šaltinius iš „Microsoft Dataverse“, „SQL Server“ arba „SharePoint“.
Šiame pavyzdyje naudojamos keturios lentelės iš pavyzdinės „SQL Azure“ „Adventure Works“ duomenų bazės. Sukūrę duomenų bazę, prie jos prisijunkite iš „Power Apps“ naudodami visiškai apibrėžtą serverio pavadinimą (pavyzdžiui, srvname.database.windows.net):
Įtraukite Button valdiklį ir nustatykite jo OnSelect ypatybę pagal šią formulę:
ClearCollect( Product, '[SalesLT].[Product]' ); ClearCollect( Customer, '[SalesLT].[Customer]' ); ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ); ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )Naršyklėje „Microsoft Edge“ arba „Google Chrome“ įjunkite kūrėjo įrankius, kad, veikiant programai, būtų stebimas tinklo srautas.
(Nebūtina) Norėdami padidinti šio palyginimo poveikį, įjunkite tinklo ribojimo funkciją.
Laikydami nuspaudę klavišą „Alt“, pasirinkite mygtuką ir stebėkite tinklo srautą.
Įrankiai rodo keturias iš eilės atliktas užklausas, panašiai, kaip šiame pavyzdyje. Faktiniai laikai buvo pašalinti, nes jie labai skiriasi. Grafike rodoma, kad kiekviena iškvieta pradedama baigus paskutiniąją:
Įrašykite, uždarykite ir iš naujo atidarykite programą.
„Power Apps“ duomenis kaupia talpykloje, todėl, mygtuką pasirinkus dar kartą, nebūtinai atsiras keturios naujos užklausos. Kiekvieną kartą, kai norite išbandyti našumą, uždarykite ir iš naujo atidarykite programą. Jei įjungėte tinklo ribojimo funkciją, rekomenduojame ją išjungti iki tol, kol būsite pasirengę kitam bandymui.
Įtraukite antrą mygtuko valdiklį ir jo ypatybę OnSelect nustatykite kaip šią formulę:
Concurrent( ClearCollect( Product, '[SalesLT].[Product]' ), ClearCollect( Customer, '[SalesLT].[Customer]' ), ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ), ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' ) )Atkreipkite dėmesį, kad įtraukėte tuos pačius "ClearCollect " skambučius į pirmąjį mygtuką, bet jie šį kartą perkeliami į Concurrent funkciją ir atskiriami kableliais.
Naršyklėje išvalykite tinklo monitorių.
Jei prieš tai naudojote tinklo ribojimo funkciją, ją vėl įjunkite.
Laikydami nuspaudę klavišą „Alt“, pasirinkite antrąjį mygtuką ir stebėkite tinklo srautą.
Įrankiai rodo keturias tuo pačiu metu atliekamas užklausas, panašiai, kaip šiame pavyzdyje. Vėlgi, faktiniai laikai buvo pašalinti, nes jie labai skiriasi. Diagrama rodo, kad visi skambučiai prasideda maždaug tuo pačiu metu ir nelaukia, kol bus baigtas ankstesnis:
Šiuose grafikuose naudojamas tas pats mastelis. Naudodami Concurrentperpus sutrumpinote bendrą šių operacijų užbaigimo laiką.
Įrašykite, uždarykite ir iš naujo atidarykite programą.
Konkuravimo sąlyga
Į programą įtraukite ryšį su tarnyba „Microsoft Translator“.
Įtraukite teksto įvesties valdiklį ir jį pervardykite į TextInput1, jei jis pavadintas kitaip.
Įtraukite mygtuko valdiklį ir jo ypatybę OnSelect nustatykite kaip šią formulę:
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 } )Įtraukite valdiklį Data table ir jo ypatybę Items nustatykite kaip Results.
Dešiniosios srities skirtuke Ypatybės pasirinkite Redaguoti laukus, kad atidarytumėte sritį Laukai.
Laukų sąraše pažymėkite kiekvieno lauko žymės langelį, kad jie visi būtų rodomi duomenų lentelėje.
(Nebūtina) Lauką Input nuvilkite į sąrašo viršų, o lauką FrenchFaster – į sąrašo apačią.
Teksto įvesties valdiklyje įveskite arba įklijuokite verstiną frazę.
Laikydami nuspaudę klavišą „Alt“, kelis kartus pasirinkite mygtuką, kad užpildytumėte lentelę.
Laikai rodomi milisekundėmis.
Kai kuriais atvejais vertimas į prancūzų k. yra greitesnis nei į vokiečių k. ir atvirkščiai. Abu prasideda tuo pačiu metu, tačiau vienas grįžta prieš kitą dėl įvairių priežasčių, įskaitant tinklo gaištį ir apdorojimą serveryje.
Jei programai reikėtų, kad vienas vertimas būtų baigtas pirmiau, būtų įvykdyta konkuravimo sąlyga. Laimei, „Power Apps“ pažymi daugumą laiko priklausomybių, kurias gali aptikti.