नोट
इस पृष्ठ तक पहुंच के लिए प्राधिकरण की आवश्यकता होती है। आप साइन इन करने या निर्देशिकाएँ बदलने का प्रयास कर सकते हैं।
इस पृष्ठ तक पहुंच के लिए प्राधिकरण की आवश्यकता होती है। आप निर्देशिकाएँ बदलने का प्रयास कर सकते हैं।
इस पर लागू होता है: कैनवास ऐप्स
मॉडल-चालित ऐप्स
कई सूत्रों का एक-दूसरे के साथ पारस्परिक रूप से मूल्यांकन करता है.
विवरण
Concurrent फ़ंक्शन एक ही संपत्ति के भीतर निर्दिष्ट कई सूत्रों को एक ही समय में मूल्यांकन करने की अनुमति देता है यदि उनके पास कनेक्टर या डेटावर्स कॉल हैं। आम तौर पर, कई सूत्रों का मूल्यांकन ; (सेमी-कॉलन) ऑपरेटर के माध्यम से उन्हें चेनिंग करके किया जाता है, जो प्रत्येक सूत्र का क्रमिक रूप से मूल्यांकन करता है. फ़ंक्शन के Concurrent साथ, ऐप उपयोग करने के बाद भी एक संपत्ति के भीतर सभी सूत्रों का मूल्यांकन करेगा ; ऑपरेटर । यह समवर्ती उपयोगकर्ताओं को समान परिणाम के लिए कम प्रतीक्षा करने में मदद करता है।
अपने ऐप्लिकेशन की OnStart प्रॉपर्टी में, ऐप्लिकेशन द्वारा डेटा लोड होने पर परफ़ॉर्मेंस को बेहतर बनाने के लिए इस्तेमाल करें Concurrent . जब पिछली कॉल समाप्त होने तक, डेटा कॉल शुरू नहीं होती है, तो ऐप को सभी अनुरोध समय के योग की प्रतीक्षा करनी चाहिए. यदि डेटा कॉल उसी समय शुरू हो जाती हैं, तो ऐप को केवल सबसे लंबे समय के अनुरोध के लिए प्रतीक्षा करनी होती है. वेब ब्राउज़र अक्सर पारस्परिक रूप से नेटवर्क कॉल करके प्रदर्शन में सुधार करते हैं.
आप उस क्रम की भविष्यवाणी नहीं कर सकते हैं जिसमें फ़ंक्शन के भीतर सूत्र Concurrent शुरू होते हैं और मूल्यांकन समाप्त होते हैं। फ़ंक्शन के भीतर सूत्रों Concurrent में समान Concurrent फ़ंक्शन के भीतर अन्य सूत्रों पर निर्भरताएँ नहीं होनी चाहिए, और यदि आप प्रयास करते हैं तो Power Apps एक त्रुटि दिखाता है. भीतर से, आप फ़ंक्शन के बाहर के Concurrent सूत्रों पर सुरक्षित रूप से निर्भरता ले सकते हैं क्योंकि वे फ़ंक्शन शुरू होने से Concurrent पहले पूरा करते हैं। फ़ंक्शन के Concurrent बाद के सूत्र सुरक्षित रूप से सूत्रों पर निर्भरता ले सकते हैं: वे फ़ंक्शन समाप्त होने से पहले सभी Concurrent पूर्ण हो जाएंगे और एक श्रृंखला में अगले सूत्र पर चले जाएंगे (यदि आप ; ऑपरेटर का उपयोग करते हैं)। यदि आप ऐसे फ़ंक्शन या सेवा विधियों का उपयोग कर रहे हैं, जिनके साइड इफ़ैक्ट हैं, तो सूक्ष्म क्रम निर्भरताएँ देखें.
आप सूत्रों को एक साथ चेन कर सकते हैं ; ऑपरेटर एक तर्क के Concurrentभीतर . उदाहरण के लिए, Concurrent( सेट (ए, 1); सेट (बी, ए + 1), सेट (एक्स, 2); सेट (y, x+2) सेट (ए, 1) का मूल्यांकन करता है; सेट (बी, ए + 1) सेट (x, 2) के साथ समवर्ती रूप से; सेट (y, x+2)। इस मामले में, सूत्रों के भीतर निर्भरताएँ ठीक हैं: a, b से पहले सेट किया जाएगा और x, y से पहले सेट किया जाएगा.
वह डिवाइस या ब्राउज़र, जिस पर ऐप चल रहा है, उसके आधार पर, वास्तव में केवल कुछ ही सूत्र पारस्परिक रूप से मूल्यांकित किए जाते हैं. Concurrent उपलब्ध क्षमताओं का उपयोग करता है और तब तक समाप्त नहीं होगा जब तक कि सभी सूत्रों का मूल्यांकन नहीं किया जाता है।
यदि आप सूत्र-स्तरीय त्रुटि प्रबंधन (उन्नत सेटिंग्स में) सक्षम करते हैं, तो तर्क क्रम में आने वाली पहली त्रुटि यहां से Concurrentलौटा दी जाती है; अन्यथा, रिक्त दिया जाता है. यदि सभी सूत्र सफल रहते हैं, तो सही दिखाया जाता है. यदि एक सूत्र विफल हो जाता है, तो उस सूत्र का शेष भाग बंद हो जाता है, लेकिन अन्य सूत्रों का मूल्यांकन जारी रहता है.
आप केवल व्यवहार सूत्रों में उपयोग कर Concurrent सकते हैं।
सिंटैक्स
Concurrent( फॉर्मूला 1,फॉर्मूला 2 [, ...] )
- सूत्र – आवश्यक. पारस्परिक रूप से मूल्यांकित किए जाने वाले सूत्र. आपको कम से कम दो सूत्र देने होंगे.
उदाहरण
तेज़ी से डेटा लोड करना
एक ऐप बनाएँ और Microsoft Dataverse, SQL Server या SharePoint से चार डेटा स्रोत जोड़ें.
यह उदाहरण SQL Azure पर नमूना एडवेंचर वर्क्स डेटाबेस से चार तालिकाओं का उपयोग करता है. डेटाबेस बनाने के बाद, पूरी तरह से योग्य सर्वर नाम का उपयोग करके (उदाहरण के लिए, srvname.database.windows.net) उसे Power Apps से कनेक्ट करें:
एक 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 } )एक डेटा तालिका नियंत्रण जोड़ें और उसके आइटम गुण को परिणाम पर सेट करें.
दाईं ओर के फलक के गुण टैब पर, फ़ील्ड संपादित करें चुनें, ताकि फ़ील्ड फलक को खोला जा सके.
फ़ील्ड की सूची में, प्रत्येक फ़ील्ड के लिए चेक बॉक्स चुनें, ताकि उन सभी को डेटा तालिका में दिखाया जा सके.
(वैकल्पिक) इनपुट फ़ील्ड को सूची के शीर्ष पर खींच कर छोड़ें और FrenchFaster फ़ील्ड को सूची के निचले भाग में खींच कर छोड़ें.
पाठ इनपुट नियंत्रण में, अनुवाद करने के लिए एक वाक्यांश लिखें या चिपकाएँ.
Alt कुंजी को दबाए रखते हुए, तालिका भरने के लिए बटन को कई बार चुनें.
समय मिलीसेकंड में दिखाए गए हैं.
कुछ मामलों में, फ़्रेंच अनुवाद जर्मन अनुवाद की तुलना में तेज़ होता है और इसके विपरीत. दोनों एक ही समय में शुरू होते हैं, लेकिन एक नेटवर्क विलंबता और सर्वर-साइड प्रोसेसिंग सहित विभिन्न कारणों से दूसरे से पहले लौटता है।
रेस कंडीशन तब उत्पन्न होगी, जब ऐप पहले समाप्त हो रहे अनुवाद पर निर्भर होगा. सौभाग्य से, Power Apps ऐसी अधिकांश टाइमिंग निर्भरताओं को ध्वजांकित करता है, जिनका वह पता लगा सकता है.