مشاركة عبر


Concurrent دالة

ينطبق على: تطبيقات اللوحة التي تستند إلى نموذج التطبيقات

تقييم معادلات متعددة في الوقت نفسه مع بعضها البعض.

الوصف

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؛ وإلا يتم إرجاع فارغ . في حالة نجاح جميع الصيغ، فإنه يتم إرجاع صواب. إذا فشلت إحدى الصيغ، تتوقف بقية هذه الصيغ، ولكن تستمر الصيغ الأخرى في التقييم.

يمكنك استخدام 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. أضف عنصر تحكم 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. أضف عنصر تحكم Text input، وأعد تسميته بـ TextInput1، إذا كان له اسم مختلف.

  3. أضف عنصر تحكم Button، وقم بتعيين خاصية 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، وقم بتعيين خاصية Items الخاصة به إلى النتائج.

  5. من علامة التبويب خصائص في الجزء الأيسر، حدد تحرير الحقول لفتح جزء الحقول.

  6. في قائمة الحقول، حدد خانة الاختيار لكل حقل لإظهارها جميعًا في جدول البيانات.

  7. (اختياري) اسحب حقل الإدخال إلى أعلى القائمة، واسحب حقل FrenchFaster إلى أسفل القائمة.

    قائمة الحقول في مجموعة النتائج.

  8. في عنصر تحكم Text input، اكتب جملة أو قم بلصقها للترجمة.

  9. أثناء الضغط على مفتاح Alt، حدد الزر عدة مرات لملء الجدول.

    يتم عرض الأوقات بالمللي ثانية.

    عرض جدول البيانات الذي يحتوي على نتائج ترجمة السلسلة

    في بعض الحالات، تكون الترجمة الفرنسية أسرع من الترجمة الألمانية، والعكس صحيح. يبدأ كلاهما في نفس الوقت، ولكن أحدهما يعود قبل الآخر لأسباب مختلفة، بما في ذلك زمن انتقال الشبكة والمعالجة من جانب الخادم.

    قد تحدث حالة سباق في حاله انتهاء التطبيق المعتمد على ترجمة واحدة أولاً. ولحظنا، يقوم Power Apps بوضع علامات على معظم تبعيات التوقيت التي يمكنه اكتشافها.