Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: Aplikasi Kanvas Berbasis model
aplikasi
Mengevaluasi beberapa rumus secara bersamaan satu sama lain.
Description
Fungsi ini Concurrent memungkinkan beberapa rumus yang ditentukan dalam properti yang sama untuk dievaluasi pada saat yang sama jika mereka memiliki konektor atau panggilan Dataverse. Biasanya, beberapa rumus dievaluasi oleh penautan bersama-sama dengan operator ; (titik koma) yang mengevaluasi masing-masing rumus secara berurutan. Dengan fungsi , Concurrent aplikasi akan mengevaluasi semua rumus dalam properti secara bersamaan bahkan setelah menggunakan operator ; . Konkurensi ini membantu pengguna menunggu lebih sedikit untuk hasil yang sama.
Di properti OnStart aplikasi Anda, gunakan Concurrent untuk meningkatkan performa saat aplikasi memuat data. Bila panggilan data tidak dimulai hingga panggilan sebelumnya selesai, aplikasi harus menunggu total semua permintaan. Jika panggilan data dimulai pada waktu yang sama, aplikasi harus menunggu hanya untuk waktu permintaan terlama. Browser web sering meningkatkan performa dengan melakukan panggilan jaringan secara bersamaan.
Anda tidak dapat memprediksi urutan rumus Concurrent dalam fungsi mulai dan evaluasi akhir. Rumus dalam Concurrent fungsi tidak boleh berisi dependensi pada rumus lain dalam fungsi yang sama Concurrent , dan Power Apps memperlihatkan kesalahan jika Anda mencoba. Dari dalam, Anda dapat dengan aman mengambil dependensi pada rumus di luar Concurrent fungsi karena selesai sebelum Concurrent fungsi dimulai. Rumus setelah Concurrent fungsi dapat dengan aman mengambil dependensi pada rumus di dalamnya: semuanya akan selesai sebelum Concurrent fungsi selesai dan berpindah ke rumus berikutnya dalam rantai (jika Anda menggunakan operator ; ). Lihat untuk dependensi urutan sempurna jika Anda memanggil metode fungsi atau layanan yang memiliki efek samping.
Anda dapat menautkan rumus bersama dengan operator ; dalam argumen ke Concurrent. Misalnya, Concurrent( Set( a, 1 ); Set( b, a+1 ), Set( x, 2 ); Set( y, x+2 ) mengevaluasi Set( a, 1 ); Set( b, a+1 ) secara bersamaan dengan Set( x, 2 ); Set( y, x+2 ). Dalam kasus ini, dependensi dalam rumusnya berjalan dengan lancar: a akan diatur sebelum b, dan x akan diatur sebelum y.
Tergantung pada perangkat atau browser tempat aplikasi berjalan, hanya beberapa rumus yang benar-benar dievaluasi secara bersamaan. Concurrent menggunakan kemampuan yang tersedia dan tidak akan selesai sampai semua rumus dievaluasi.
Jika Anda mengaktifkan manajemen kesalahan tingkat rumus (dalam pengaturan tingkat lanjut), kesalahan pertama yang ditemui dalam urutan argumen dikembalikan dari Concurrent; jika tidak, kosong dikembalikan. Jika semua rumus berhasil, true akan dihasilkan. Jika satu rumus gagal, sisa rumus tersebut akan berhenti, namun rumus lainnya terus mengevaluasinya.
Anda hanya bisa menggunakan Concurrent dalam rumus perilaku.
Sintaks
Concurrent( Formula1, Formula2 [, ...] )
- Rumus– Wajib. Rumus untuk mengevaluasi secara bersamaan. Anda harus memasok minimal dua rumus.
Contoh
Memuat data lebih cepat
Buat aplikasi, dan tambahkan empat sumber data dari Microsoft Dataverse, SQL Server, atau SharePoint.
Contoh ini menggunakan empat tabel dari database Adventure Works contoh di SQL Azure. Setelah membuat database, sambungkan dari Power Apps menggunakan nama server yang sepenuhnya memenuhi syarat (misalnya, srvname.database.windows.net):
Tambahkan kontrol Button dan atur properti OnSelect ke rumus ini:
ClearCollect( Product, '[SalesLT].[Product]' ); ClearCollect( Customer, '[SalesLT].[Customer]' ); ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ); ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )Di Microsoft Edge atau Google Chrome, aktifkan alat pengembang untuk memantau lalu lintas jaringan saat aplikasi berjalan.
(opsional) Aktifkan pengontrolan jaringan untuk memperbesar dampak perbandingan ini.
Sambil menekan terus tombol Alt, pilih tombol, lalu lihat lalu lintas jaringan.
Alat ini menunjukkan empat permintaan yang dilakukan dalam rangkaian, mirip dengan contoh ini. Waktu aktual telah dihapus karena bervariasi secara liar. Grafik menunjukkan bahwa setiap panggilan dimulai setelah yang terakhir telah selesai:
Simpan, tutup, dan buka kembali aplikasi.
Power Apps meng-cache data, sehingga memilih tombol lagi tidak akan menyebabkan empat permintaan baru. Setiap kali Anda ingin menguji performa, tutup dan buka kembali aplikasi. Jika Anda menonaktifkan pengontrolan jaringan, Anda mungkin ingin menonaktifkannya hingga Anda siap melakukan pengujian lain.
Tambahkan kontrol Tombol kedua dan atur properti OnSelect ke rumus ini:
Concurrent( ClearCollect( Product, '[SalesLT].[Product]' ), ClearCollect( Customer, '[SalesLT].[Customer]' ), ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ), ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' ) )Perhatikan bahwa Anda menambahkan panggilan ClearCollect yang sama ke tombol pertama, tetapi dibungkus dalam fungsi dan dipisahkan Concurrent oleh koma kali ini.
Hapus monitor jaringan di browser.
Jika Anda menggunakan pengontrolan jaringan sebelumnya, aktifkan kembali.
Sambil menekan terus tombol Alt, pilih tombol kedua, lalu lihat lalu lintas jaringan.
Alat ini menunjukkan empat permintaan yang dilakukan secara bersamaan, mirip dengan contoh ini. Sekali lagi, waktu aktual telah dihapus karena bervariasi secara liar. Grafik menunjukkan bahwa semua panggilan dimulai pada waktu yang hampir bersamaan dan tidak menunggu panggilan sebelumnya selesai:
Grafik ini didasarkan pada skala yang sama. Dengan menggunakan Concurrent, Anda memisahkan jumlah total waktu yang diperlukan operasi ini untuk menyelesaikannya.
Simpan, tutup, dan buka kembali aplikasi.
Ketentuan Race
Tambahkan sambungan ke layanan Microsoft Translator ke aplikasi Anda.
Tambahkan kontrol Input teks, dan namai kembali TextInput1 jika memiliki nama yang berbeda.
Tambahkan kontrol Tombol dan atur properti OnSelect ke rumus 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 } )Tambahkan kontrol Tabel data dan atur properti Item ke Hasil.
Pada tab Properti di panel sebelah kanan, pilih Edit bidang untuk membuka panel Bidang.
Di daftar bidang, pilih kotak centang untuk setiap bidang untuk menampilkan semua di tabel data.
(opsional) Tarik Input ke bagian atas daftar, dan tarik bidang FrenchFaster ke bagian bawah daftar.
Di kontrol Input teks, ketik atau tempel frasa untuk diterjemahkan.
Sambil menekan terus tombol Alt, pilih tombol beberapa kali untuk mengisi tabel.
Waktu ditampilkan dalam milidetik.
Dalam beberapa kasus, terjemahan bahasa Perancis lebih cepat daripada terjemahan bahasa Jerman, dan sebaliknya. Keduanya dimulai pada saat yang sama, tetapi satu kembali di hadapan yang lain karena berbagai alasan, termasuk latensi jaringan dan pemrosesan sisi server.
Ketentuan race akan terjadi jika aplikasi tergantung pada satu terjemahan yang berakhir terlebih dulu. Untungnya, Power Apps menandai sebagian besar dependensi pewaktuan yang dapat dideteksi.