Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik: Vászonalapú alkalmazások
Modellalapú alkalmazások
Több képletet értékel ki egyidejűleg.
Description
A Concurrent függvény lehetővé teszi több, ugyanazon tulajdonságon belül megadott képlet egyidejű kiértékelését, ha összekötő- vagy Dataverse-hívásokkal rendelkeznek. Több képlet általában a ; (pontosvessző) operátorral elválasztott felsorolással értékelhető ki. A függvények kiértékelése a felsorolás sorrendjében történik. A függvény használatával az Concurrent alkalmazás az ; operátor használata után is egyidejűleg kiértékeli a tulajdonság összes képletét. Ezzel az egyidejűséggel a felhasználók kevesebbet várnak ugyanarra az eredményre.
Az alkalmazás OnStart tulajdonságában javíthatja Concurrent a teljesítményt, amikor az alkalmazás betölti az adatokat. Ha az adathívások csak a korábbi hívások befejeződése után kezdődnek el, akkor az alkalmazásnak a lekérési idők összegét kell kivárnia. Ha az adathívások egyszerre kezdődnek, akkor az alkalmazásnak csak a leghosszabb lekérési időt kell megvárnia. A webböngészők teljesítményét gyakran javítja a hálózati hívások párhuzamos végrehajtása.
A függvényben lévő képletek Concurrent kezdő és befejező kiértékelési sorrendjét nem lehet előrejelezni. A függvényen belüli Concurrent képletek nem tartalmazhatnak függőségeket az ugyanazon Concurrent a függvényen belüli más képleteken, és a Power Apps hibajelzést jelenít meg, ha megpróbálja. Belülről biztonságosan felvehet függőségeket a Concurrent függvényen kívüli képletektől, mert azok a Concurrent függvény elindítása előtt befejeződnek. A függvény utáni képletek biztonságosan átvehetik a Concurrent képletek függőségeit a függvényen belül: mind befejeződnek, mielőtt a Concurrent függvény befejeződik, és továbblépnek a lánc következő képletére (ha a ; operátort használja). Mellékhatásokkal járó függvények vagy szolgáltatásmetódusok hívásakor ügyeljen a sorrendre kényes függőségekre.
A képleteket a ; operátorral együtt az argumentumon belül a következőhöz Concurrentfűzheti: Például:Concurrent ( Set( a; 1 ); Set( b, a+1 ), Set( x, 2 ); Set( y, x+2 ) ) kiértékeli a Set( a, 1 ); Set( b, a+1 ) egyidejűleg a Set( x, 2 ); Set( y, x+2 ). Ebben a példában a képletek függőségei megfelelőek: az a értéket kap a b előtt, az x pedig az y előtt.
Attól függően, hogy az alkalmazás milyen eszközön vagy böngészőben fut, csak néhány képlet ténylegesen párhuzamos kiértékelésére lehet lehetőség. Concurrent használja a rendelkezésre álló képességeket, és nem fejeződik be, amíg az összes képlet ki nem lett értékelve.
Ha engedélyezi a képletszintű hibakezelést (speciális beállításokban), a rendszer az argumentumsorrendben észlelt első hibát adja vissza Concurrent; ellenkező esetben üres értéket ad vissza. Ha minden képlet megfelelő, akkor a visszatérési érték true. Ha egy képlet hibás, akkor ennek a képletnek a kiértékelése megszakad, de a többié folytatódik.
Csak viselkedésképletekben használhatóConcurrent.
Szintaxis
Concurrent( Formula1, Formula2 [, ...] )
- Képletek – Kötelező. Az egyidejűleg kiértékelendő képletek. Legalább két képletet meg kell adni.
Példák
Gyorsabb adatbetöltés
Hozzon létre egy alkalmazást, és vegyen fel négy adatforrást a Microsoft Dataverse, az SQL Server vagy a SharePoint rendszerből.
Ebben a példában az SQL Azure-on lévő Adventure Works mintaadatbázis négy tábláját használtuk. Az adatbázis létrehozása után csatlakozzon hozzá a Power Apps szolgáltatásból a teljes kiszolgálónév (például kiszolgnev.database.windows.net) megadásával:
Adjon hozzá egy Button vezérlőelemet, és az OnSelect tulajdonság értékeként adja meg a következő képletet:
ClearCollect( Product, '[SalesLT].[Product]' ); ClearCollect( Customer, '[SalesLT].[Customer]' ); ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ); ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )A Microsoft Edge vagy a Google Chrome böngészőben a fejlesztői eszközök bekapcsolásával figyelheti a hálózati forgalmat az alkalmazás futása közben.
(választható) Az összehasonlítás látványosabbá tehető a hálózatszabályozás bekapcsolásával.
Az Alt billentyűt lenyomva tartva válassza ki a gombot, és figyelje meg a hálózati forgalmat.
Az eszközök, a példához hasonlóan, négy egymás után teljesített kérelmet mutatnak. A tényleges időpontok el lettek távolítva, mivel ezek nagyon eltérőek. A grafikonon látható, hogy mindegyik hívás az előző befejezése után kezdődött el:
Mentse, zárja be és nyissa meg újra az alkalmazást.
A Power Apps gyorsítótárazza az adatokat, ezért a gomb ismételt kiválasztása nem feltétlenül vált ki újabb négy kérelmet. Ha a teljesítményt kívánja tesztelni, akkor minden alkalommal zárja be és nyissa meg újra az alkalmazást. Ha bekapcsolta a hálózatszabályozást, akkor ajánlott kikapcsolni, amíg készen nem áll a következő tesztre.
Adjon hozzá egy második Gomb vezérlőelemet, és az OnSelect tulajdonság értékeként adja meg a következő képletet:
Concurrent( ClearCollect( Product, '[SalesLT].[Product]' ), ClearCollect( Customer, '[SalesLT].[Customer]' ), ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ), ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' ) )Vegye figyelembe, hogy ugyanazokat a ClearCollect-hívásokat adta hozzá az első gombhoz, de ezek egy Concurrent függvénybe vannak csomagolva, és ezúttal vesszővel vannak elválasztva.
Ürítse ki a böngésző hálózatfigyelőjét.
Ha az előző teszthez használt hálózatszabályozást, akkor kapcsolja be újra.
Az Alt billentyűt lenyomva tartva válassza ki a második gombot, és figyelje meg a hálózati forgalmat.
Az eszközök, a példához hasonlóan, négy egyidejűleg teljesített kérelmet mutatnak. A tényleges időpontok ismét el lettek távolítva, mivel azok nagyon eltérőek. A grafikonon látható, hogy az összes hívás körülbelül ugyanabban az időpontban indul, és nem várja meg, amíg az előző befejeződik:
A grafikonok méretezése egyezik. A használatával Concurrentfelére csökkentette a műveletek befejezéséhez szükséges időt.
Mentse, zárja be és nyissa meg újra az alkalmazást.
Versenyhelyzet
Adjon hozzá az alkalmazáshoz egy kapcsolatot a Microsoft Translator szolgáltatáshoz.
Adjon hozzá egy Szövegbevitel vezérlőelemet, és a nevét (ha eltér) módosítsa a TextInput1 értékre.
Adjon hozzá egy Gomb vezérlőelemet, és az OnSelect tulajdonság értékeként adja meg a következő képletet:
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 } )Adjon hozzá egy Adattábla vezérlőelemet, és állítsa az Elemek tulajdonságot Eredmények értékre.
A jobb oldali panel Tulajdonságok lapján válassza a Mezők szerkesztése lehetőséget a Mezők panel megnyitásához.
A mezők listájában jelölje be a mezők jelölőnégyzeteit, hogy mindegyik megjelenjen az adattáblában.
(választható) Húzza az Input mezőt a lista tetejére, a FrenchFaster mezőt pedig a lista aljára.
A Szövegbevitel vezérlőelembe gépeljen vagy illesszen be egy lefordítandó kifejezést.
Az Alt billentyűt lenyomva tartva kattintson többször a gombra, hogy kitöltse a táblát.
Az időértékek ezredmásodpercben jelennek meg.
Bizonyos esetekben a francia fordítás gyorsabb a németnél vagy fordítva. Mindkettő egyszerre kezdődik, de az egyik a másik előtt tér vissza különböző okokból, beleértve a hálózati késést és a kiszolgálóoldali feldolgozást.
Versenyhelyzet akkor állna elő, ha az alkalmazás függne attól, hogy melyik fordítás fejeződik be elsőként. Szerencsére a Power Apps a legtöbb észlelt időzítési függőséget megjelöli.