Rate this post

Dart Async liên quan đến lập trình không đồng bộ. Nó thực hiện hoạt động không đồng bộ trong một luồng. Nó đảm bảo rằng các chức năng quan trọng sẽ được thực thi cho đến khi hoàn thành. Hoạt động không đồng bộ được thực thi, riêng luồng ứng dụng chính. Trong Dart, một thao tác không thể làm gián đoạn thao tác kia; nó có nghĩa là một hoạt động có thể thực hiện tại một thời điểm mà không phần nào khác của chương trình có thể ngăn chặn nó.

Các bài viết liên quan:

Hãy hiểu ví dụ sau:

Ví dụ

import 'dart:io';   
void main() {   
   print("Enter your favorite car :");              
     
   // prompt for user input   
   String car = stdin.readLineSync();    
     
   // this is a synchronous method that reads user input   
   print("The car is  ${car}");   
   print("End of main");   
}  

Giải trình:

Trong đoạn mã trên, chúng tôi đã sử dụng readLineSync () , là phương thức đồng bộ . Nó có nghĩa là; việc thực thi tất cả các lệnh theo sau lệnh gọi phương thức readLineSync () sẽ bị chặn cho đến khi phương thức readLineSync () không hoàn thành việc thực thi.

Stdin.readLineSync () không thực thi gì cho đến khi nó nhận được đầu vào từ người dùng. Nó đợi người dùng nhập để thực thi thêm.

Sự khác biệt giữa Asynchronous và Synchronous

Hãy hiểu sự khác biệt giữa đồng bộ và không đồng bộ.

Trong khoa học máy tính, nếu chúng ta nói một chương trình cụ thể là đồng bộ, điều đó có nghĩa là nó đang đợi một sự kiện để thực thi thêm. Cách tiếp cận này được điều khiển với một demerit, nếu một phần của mã mất nhiều thời gian để thực thi, các khối tiếp theo thông qua một khối không liên quan sẽ bị chặn thực thi.

Đây là vấn đề chính của phương pháp tiếp cận đồng bộ. Một phần của chương trình có thể yêu cầu thực thi trước phần hiện tại, nhưng cách tiếp cận đồng bộ không cho phép điều đó.

Điều này không phù hợp với các máy chủ web, nơi mà yêu cầu phải độc lập với những người khác. Nó có nghĩa là, máy chủ web không đợi để hoàn thành việc thực hiện yêu cầu hiện tại, nó sẽ phản hồi lại yêu cầu từ những người dùng khác.

Máy chủ web phải chấp nhận yêu cầu từ người dùng khác trước khi thực hiện các yêu cầu trước đó.

Cách tiếp cận này được gọi là lập trình không đồng bộ. Lập trình không đồng bộ thường tập trung vào mô hình lập trình không chờ hoặc không chặn. Dart : async được tạo điều kiện để triển khai khối lập trình không đồng bộ trong tập lệnh Dart.

Ví dụ

Chúng tôi tạo một tệp với một vài tên và lưu tệp này dưới dạng names.txt và viết chương trình để đọc tệp này mà không làm chậm phần khác của mã.

  1. 1 , Peter  
  2. 2 , John  
  3. 3 , Tom  
  4. 4 , Johnson  

Hãy xem xét đoạn mã sau.

import "dart:async";   
import "dart:io";    
  
void main(){   
   File file1 = new File("C:\Users\DEVANSH SHARMA\Desktop\contact.txt");   
   Future<String> fs = file1.readAsString();    
    
   // returns a future object, it is an async method   
   fs.then((data)=>print(data));    
     
   // once file is read, call back method is invoked    
   print("End of main");    
   
}  

Đầu ra

End of main
1, Peter
2, John
3, Tom
4,  Johnson

Tương lai Dart

Tương lai phi tiêu được định nghĩa là nhận được một kết quả nào đó trong tương lai. Đối tượng Tương lai sử dụng để tạo điều kiện cho lập trình không đồng bộ. Các đối tượng trong tương lai là một công cụ để biểu thị các giá trị được trả về bởi một biểu thức mà việc thực thi sẽ hoàn thành vào một thời điểm sau đó (Trong tương lai). Để làm việc với tương lai, chúng tôi có thể sử dụng async and await hoặc Future API .

Dart async và await

Từ khóa async

Từ khóa asyncawait được phép triển khai lập trình không đồng bộ mà không cần sử dụng Future API. Từ khóa async là cần thiết để chạy chức năng không đồng bộ; chúng ta cần thêm async sau tên hàm. Cú pháp được đưa ra dưới đây:

Cú pháp:

func_name() async {  
   //function body  
}  

Khi một hàm không đồng bộ được gọi, đối tượng Tương lai ngay lập tức trả về và điều đó cho biết hàm không đồng bộ sẽ thực thi sau đó. Khi phần thân của hàm không đồng bộ được thực thi, lệnh gọi hàm sẽ trả về đối tượng Tương lai. Lệnh gọi hàm sẽ được hoàn thành với kết quả của nó.

Từ khóa await

Từ khóa await cũng được sử dụng để thực thi hàm không đồng bộ. Nó tạm dừng chức năng hiện đang chạy cho đến khi kết quả sẵn sàng. Khi nó trả về kết quả, sau đó nó tiếp tục sang dòng mã tiếp theo. Từ khóa await chỉ có thể được sử dụng với các hàm không đồng bộ. Cú pháp được đưa ra dưới đây.

Cú pháp:

await e;  

Ở đây, e là một biểu thức không đồng bộ, và nó được kỳ vọng sẽ đánh giá thành Tương lai. Biểu thức await đánh giá e, và sau đó tạm dừng chức năng hiện đang chạy cho đến khi kết quả sẵn sàng.

Hãy hiểu ví dụ sau:

Ví dụ 1

void hii() async {  
         print("Hii await");  
  
}  
  
void main() async {  
         await hii();            // Using await keyword  
         print("Task Complete");  
  
}  

Giải trình:Ở đây, chúng ta đã khai báo hàm main () là không đồng bộ bằng cách sử dụng từ khóa async vì chúng ta gọi phương thức hii () không đồng bộ. Sau đó, chúng tôi sử dụng công cụ sửa đổi await để gọi hii () thực thi không đồng bộ.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now