Ambil perhatian
Akses ke halaman ini memerlukan kebenaran. Anda boleh cuba log masuk atau menukar direktori.
Akses ke halaman ini memerlukan kebenaran. Anda boleh cuba menukar direktori.
Terpakai kepada: Apl
kanvas Apl dipacu model
Menilai berbilang formula secara serentak antara satu sama lain.
Penerangan
Fungsi ini Concurrent membolehkan berbilang formula yang ditentukan dalam sifat yang sama dinilai pada masa yang sama jika ia mempunyai penyambung atau panggilan Dataverse. Biasanya, berbilang formula dinilai dengan merantaikan formula itu bersama dengan ; (koma bertitik) operator, yang menilai setiap formula secara berurutan. Dengan fungsi ini Concurrent , apl akan menilai semua formula dalam sifat secara serentak walaupun selepas menggunakan pengendali ; . Serentak ini membantu pengguna menunggu lebih sedikit untuk hasil yang sama.
Dalam sifat OnStart apl anda, gunakan Concurrent untuk meningkatkan prestasi apabila apl memuatkan data. Apabila panggilan data tidak dimulakan sehingga panggilan sebelumnya selesai, aplikasi mesti menunggu untuk jumlah semua masa permintaan. Jika panggilan data bermula pada masa yang sama, aplikasi hanya perlu menunggu untuk masa permintaan terpanjang. Pelayar web sering meningkatkan prestasi dengan melaksanakan panggilan rangkaian secara serentak.
Anda tidak boleh meramalkan tertib di mana formula dalam Concurrent fungsi memulakan dan menamatkan penilaian. Formula dalam Concurrent fungsi tidak sepatutnya mengandungi kebergantungan pada formula lain dalam fungsi yang sama Concurrent dan Power Apps menunjukkan ralat jika anda mencuba. Dari dalam, anda boleh mengambil kebergantungan pada formula di luar Concurrent fungsi dengan selamat kerana ia selesai sebelum Concurrent fungsi bermula. Formula selepas Concurrent fungsi boleh mengambil kebergantungan pada formula di dalamnya dengan selamat: semuanya akan diselesaikan sebelum Concurrent fungsi selesai dan beralih ke formula seterusnya dalam rantaian (jika anda menggunakan pengendali ; Berhati-hatilah untuk kebergantungan pesanan halus jika anda memanggil fungsi atau kaedah perkhidmatan yang mempunyai kesan sampingan.
Anda boleh merantaikan formula bersama-sama dengan pengendali ; dalam hujah kepada Concurrent. Sebagai contoh, Concurrent( Set( a, 1 ); Set( b, a+1 ), Set( x, 2 ); Set( y, x+2 ) ) menilaiSet( a, 1 ); Set( b, a+1 ) serentak dengan Set( x, 2 ); Set( y, x+2 ). Dalam kes ini, kebergantungan dalam formula adalah baik:a akan ditetapkan sebelum b dan x akan ditetapkan sebelum y.
Bergantung pada peranti atau pelayar tempat aplikasi dijalankan, hanya sebilangan formula yang sebenarnya dapat dinilai secara serentak. Concurrent menggunakan keupayaan yang tersedia dan tidak akan selesai sehingga semua formula telah dinilai.
Jika anda mendayakan pengurusan ralat peringkat formula (dalam tetapan lanjutan), ralat pertama yang ditemui dalam tertib hujah dikembalikan daripada Concurrent; jika tidak, kosong dikembalikan. Jika semua formula berjaya, benar dikembalikan. Jika satu formula gagal, selebihnya formula berhenti tetapi formula lain terus dinilai.
Anda boleh menggunakan Concurrent hanya dalam formula tingkah laku.
Sintaks
Concurrent( Formula1, Formula2 [, ...] )
- Formula - Diperlukan. Formula untuk menilai secara serentak. Anda mesti membekalkan sekurang-kurangnya dua formula.
Contoh
Memuatkan data dengan lebih pantas
Cipta aplikasi dan tambahkan empat sumber data dari Microsoft Dataverse, SQL Server atau SharePoint.
Contoh ini menggunakan empat jadual dari sampel pangkalan data Adventure Works pada SQL Azure. Selepas anda mencipta pangkalan data, sambung kepadanya dari Power Apps menggunakan nama pelayan yang berkelayakan sepenuhnya (untuk contoh, srvname.database.windows.net):
Tambah kawalan Button, dan tetapkan sifat OnSelect ke formula ini:
ClearCollect( Product, '[SalesLT].[Product]' ); ClearCollect( Customer, '[SalesLT].[Customer]' ); ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ); ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )Dalam Microsoft Edge atau Google Chrome, hidupkan alat pembangun untuk memantau trafik rangkaian semasa aplikasi anda dijalankan.
(pilihan) Hidupkan pendikitan rangkaian untuk menambahkan kesan perbandingan ini.
Sambil menahan kekunci Alt, pilih butang dan kemudian perhatikan trafik rangkaian.
Alat menunjukkan empat permintaan yang dilaksanakan secara bersiri, serupa dengan contoh ini. Masa sebenar telah dialih keluar kerana ia berbeza-beza. Grafik menunjukkan bahawa setiap panggilan bermula setelah yang terakhir selesai:
Simpan, tutup dan buka semula aplikasi.
Power Apps mendapatkan data cache, maka memilih butang sekali lagi tidak semestinya menyebabkan empat permintaan baharu. Setiap kali anda ingin menguji prestasi, tutup dan buka semula aplikasi anda. Jika anda menghidupkan pendikitan rangkaian, anda mungkin mahu mematikannya sehingga anda bersedia untuk ujian lain.
Tambah kawalan Button kedua dan tetapkan sifat OnSelect kepada formula ini:
Concurrent( ClearCollect( Product, '[SalesLT].[Product]' ), ClearCollect( Customer, '[SalesLT].[Customer]' ), ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ), ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' ) )Ambil perhatian bahawa anda menambah panggilan ClearCollect yang sama pada butang pertama, tetapi ia dibungkus dalam Concurrent fungsi dan dipisahkan dengan koma kali ini.
Kosongkan monitor rangkaian dalam pelayar.
Jika anda menggunakan pendikitan rangkaian sebelum ini, hidupkan lagi.
Sambil menahan kekunci Alt, pilih butang kedua dan kemudian perhatikan trafik rangkaian.
Alat menunjukkan empat permintaan yang dilaksanakan secara serentak, serupa dengan contoh ini. Sekali lagi, masa sebenar telah dialih keluar kerana ia berbeza-beza. Graf menunjukkan bahawa semua panggilan bermula pada masa yang sama dan jangan tunggu yang sebelumnya selesai:
Grafik ini berdasarkan pada skala yang sama. Dengan menggunakan Concurrent, anda mengurangkan separuh jumlah masa yang diambil oleh operasi ini untuk diselesaikan.
Simpan, tutup dan buka semula aplikasi.
Keadaan perlumbaan
Tambah sambungan ke perkhidmatan Penterjemah Microsoft untuk aplikasi anda.
Tambah kawalan Text input dan namakannya semula sebagai TextInput1 jika ia mempunyai nama yang berbeza.
Tambah kawalan Button dan tetapkan sifat OnSelect pada formula ini:
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 } )Tambah kawalan Data table dan tetapkan sifat Item kepada Hasil.
Pada tab Sifat sebelah kanan anak tetingkap, pilih Edit medan untuk membuka anak tetingkap Medan.
Dalam senarai medan, pilih kotak semak untuk setiap medan bagi menunjukkan semuanya dalam jadual data.
(pilihan) Seret medan Input ke sebelah atas senarai dan seret medan FrenchFaster ke bahagian bawah senarai.
Dalam kawalan Text input, taip atau tampal frasa untuk diterjemahkan.
Sambil menahan butang Alt, pilih butang berbilang kali untuk mengisi jadual.
Masa ditunjukkan dalam milisaat.
Dalam sesetengah kes, terjemahan Bahasa Perancis lebih pantas daripada terjemahan Jerman dan sebaliknya. Kedua-duanya bermula pada masa yang sama, tetapi satu kembali sebelum yang lain atas pelbagai sebab, termasuk kependaman rangkaian dan pemprosesan bahagian pelayan.
Keadaan perlumbaan akan berlaku jika aplikasi disandarkan pada satu terjemahan yang berakhir terlebih dahulu. Mujurlah, Power Apps menandakan kebergantungan paling banyak masa yang ia boleh kesan.