Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
Áp dụng cho: Ứng dụng Canvas Ứng
dụng dựa trên mô hình
Đánh giá nhiều công thức cùng lúc.
Description
Hàm Concurrent này cho phép nhiều công thức được chỉ định trong cùng một thuộc tính được đánh giá cùng một lúc nếu chúng có các cuộc gọi đường kết nối hoặc Dataverse. Thông thường, ứng dụng đánh giá nhiều công thức bằng cách xâu chuỗi những công thức này lại với nhau bằng toán tử ; (dấu chấm phẩy) để đánh giá từng công thức theo tuần tự. Với chức năng Concurrent này, ứng dụng sẽ đánh giá tất cả các công thức trong một thuộc tính đồng thời ngay cả sau khi sử dụng toán tử ;. Điều này đồng thời giúp người dùng chờ ít hơn cho cùng một kết quả.
Trong thuộc tính OnStart của ứng dụng, hãy sử dụng để Concurrent cải thiện hiệu suất khi ứng dụng tải dữ liệu. Khi lệnh gọi dữ liệu chỉ bắt đầu khi lệnh gọi trước hoàn tất, ứng dụng phải chờ để có được tổng số lần yêu cầu. Nếu các lệnh gọi dữ liệu bắt đầu cùng một lúc, ứng dụng chỉ cần đợi lần yêu cầu lâu nhất. Trình duyệt web thường thực hiện đồng thời các lệnh gọi mạng để cải thiện hiệu suất.
Bạn không thể dự đoán thứ tự các công thức trong đánh giá Concurrent bắt đầu và kết thúc hàm. Các công thức trong Concurrent hàm Concurrent không được chứa phụ thuộc vào các công thức khác trong cùng một hàm và Power Apps sẽ hiển thị lỗi nếu bạn thử. Từ bên trong, bạn có thể phụ thuộc một cách an toàn vào các công thức bên ngoài Concurrent hàm vì chúng hoàn thành trước khi hàm Concurrent bắt đầu. Concurrent Các công thức sau khi hàm có thể phụ thuộc một cách an toàn vào các công thức bên trong: Concurrent chúng sẽ hoàn tất trước khi hàm kết thúc và chuyển sang công thức tiếp theo trong một chuỗi (nếu bạn sử dụng toán tử ;). Hãy cảnh giác với các phần phụ thuộc nếu bạn đang gọi các chức năng hoặc phương thức dịch vụ có tác dụng phụ.
Bạn có thể chuỗi các công thức cùng với toán tử ; trong một đối số đến Concurrent. Ví dụ: Concurrent( Set( a, 1 ); Set( b, a+1 ), Set( x, 2 ); Set( y, x+2 ) ) đánhgiá Set( a, 1 ); Set( b, a+1 ) đồng thời với Set( x, 2 ); Set( y, x+2 ). Trong trường hợp này, các phần phụ thuộc trong công thức ổn: a sẽ được đặt trước b và x sẽ được đặt trước y.
Tùy thuộc vào thiết bị hoặc trình duyệt mà ứng dụng đang chạy, hàm chỉ thực sự đánh giá đồng thời một số ít công thức. Concurrent dùng các khả năng sẵn có và sẽ không hoàn thành cho đến khi tất cả các công thức đã được đánh giá.
Nếu bạn bật Quản lý lỗi mức công thức (trong thiết đặt nâng cao), Concurrentlỗi đầu tiên gặp phải trong thứ tự đối số sẽ được trả về từ ; nếu không, lỗi trống sẽ được trả về. Nếu triển khai thành công tất cả các công thức, thì hàm sẽ trả về true. Nếu không thể triển khai một công thức, hàm sẽ dừng đánh giá phần còn lại của công thức này nhưng vẫn tiếp tục đánh giá các công thức khác.
Bạn chỉ có thể sử Concurrent dụng trong công thức hành vi.
Cú pháp
Concurrent( Formula1, Formula2 [, ...] )
- Công thức – Bắt buộc. Các công thức cần đánh giá đồng thời. Bạn phải thêm ít nhất hai công thức.
Ví dụ
Tải dữ liệu nhanh hơn
Tạo một ứng dụng rồi thêm bốn nguồn dữ liệu từ Microsoft Dataverse, SQL Server hoặc SharePoint.
Ví dụ này sử dụng bốn bảng từ mẫu cơ sở dữ liệu Adventure Works trên SQL Azure. Sau khi bạn tạo cơ sở dữ liệu, hãy kết nối với cơ sở dữ liệu này từ Power Apps bằng tên máy chủ đủ điều kiện (ví dụ: srvname.database.windows.net):
Thêm tùy chọn kiểm soát Button rồi đặt thuộc tính OnSelect thành công thức sau:
ClearCollect( Product, '[SalesLT].[Product]' ); ClearCollect( Customer, '[SalesLT].[Customer]' ); ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ); ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )Trong Microsoft Edge hoặc Google Chrome, hãy bật công cụ dành cho nhà phát triển để giám sát lưu lượng truy cập mạng khi ứng dụng của bạn đang chạy.
(không bắt buộc) Bật tính năng điều chỉnh mạng để tăng cường hiệu quả của phép so sánh này.
Nhấn và giữ phím Alt, đồng thời chọn nút này rồi xem lưu lượng truy cập mạng.
Các công cụ hiển thị bốn yêu cầu được thực hiện liên tiếp, tương tự như ví dụ sau đây. Thời gian thực tế đã bị xóa vì chúng khác nhau một cách hoang dại. Biểu đồ cho thấy mỗi lệnh gọi bắt đầu sau khi lệnh gọi trước kết thúc:
Lưu, đóng rồi mở lại cấu hình.
Power Apps lưu trữ dữ liệu trong bộ nhớ đệm. Vì vậy, khi chọn lại nút, không nhất thiết phải tạo bốn yêu cầu mới. Mỗi lần bạn muốn kiểm tra hiệu suất, hãy đóng rồi mở lại ứng dụng. Nếu đã bật tính năng điều chỉnh mạng, bạn có thể cần tắt tính năng này cho đến khi sẵn sàng thực hiện lượt kiểm tra khác.
Thêm công cụ điều khiển Button (Nút) thứ hai rồi đặt thuộc tính OnSelect của nút này thành công thức sau:
Concurrent( ClearCollect( Product, '[SalesLT].[Product]' ), ClearCollect( Customer, '[SalesLT].[Customer]' ), ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ), ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' ) )Lưu ý rằng lần này bạn đã thêm cùng một cuộc gọi ClearCollect vào nút đầu tiên nhưng Concurrent các cuộc gọi đó được ngắt dòng trong một chức năng và lần này được phân tách bằng dấu phẩy.
Xóa màn hình mạng trong trình duyệt.
Nếu trước đó, bạn đã sử dụng tính năng điều chỉnh mạng, thì hãy bật lại tính năng này.
Nhấn và giữ phím Alt, đồng thời chọn nút thứ hai rồi xem lưu lượng truy cập mạng.
Các công cụ hiển thị bốn yêu cầu được thực hiện đồng thời, tương tự như ví dụ sau đây. Một lần nữa, thời gian thực tế đã bị xóa vì chúng khác nhau một cách hoang dại. Đồ thị cho thấy rằng tất cả các cuộc gọi bắt đầu cùng một lúc và không chờ đến khi cuộc gọi trước đó kết thúc:
Những biểu đồ này dựa trên cùng một tỷ lệ. Bằng cách sử Concurrentdụng , bạn đã giảm một nửa tổng thời gian hoàn tất các thao tác này.
Lưu, đóng rồi mở lại cấu hình.
Điều kiện Race
Kết nối ứng dụng của bạn với dịch vụ Trình biên dịch của Microsoft.
Thêm công cụ điều khiển Text input (Nội dung nhập văn bản) rồi đổi tên thành TextInput1 nếu công cụ này hiện có tên khác.
Thêm công cụ điều khiển Button (Nút) rồi đặt thuộc tính OnSelect của nút này thành công thức sau:
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 } )Thêm công cụ điều khiển Data table (Bảng dữ liệu), rồi đặt thuộc tính Items (Mục) thành Results.
Trên tab Properties (Thuộc tính) ở ngăn bên phải, hãy chọn Edit fields (Chỉnh sửa trường) để mở ngăn Fields (Trường).
Trong danh sách trường, hãy chọn hộp kiểm cho từng trường để hiển thị tất cả các trường đó trong bảng dữ liệu.
(không bắt buộc) Kéo trường Input lên đầu danh sách và kéo trường FrenchFaster xuống cuối danh sách.
Trong công cụ điều khiển Text input (Nội dung nhập văn bản), hãy nhập hoặc dán một cụm từ cần dịch.
Nhấn và giữ phím Alt, đồng thời chọn nút nhiều lần để điền vào bảng.
Thời gian hiển thị bằng mili giây.
Trong một số trường hợp, bản dịch tiếng Pháp nhanh hơn bản dịch tiếng Đức và ngược lại. Cả hai bắt đầu cùng một lúc, nhưng một trở lại trước khi khác vì nhiều lý do, bao gồm cả độ trễ mạng và xử lý phía máy chủ.
Điều kiện thực hiện sẽ xảy ra nếu ứng dụng phụ thuộc vào bản dịch hoàn thành trước. Thật may, Power Apps gắn cờ hầu hết phần phụ thuộc thời gian mà hàm có thể phát hiện.