Để kiểm tra xem một phương thức bất đồng bộ (async) đã hoàn thành hay chưa, bạn có thể sử dụng các kỹ thuật khác nhau. Dưới đây là một hướng dẫn chi tiết về cách kiểm tra và xử lý kết quả từ các phương thức bất đồng bộ, bao gồm các cách sử dụng cơ bản cũng như các phương pháp nâng cao.

Khái niệm về Phương thức Bất đồng bộ

Phương thức bất đồng bộ trong Dart được khai báo với từ khóa async và thường trả về một đối tượng Future. Một phương thức bất đồng bộ cho phép bạn thực hiện các tác vụ không đồng bộ mà không chặn luồng chính của ứng dụng.

Kiểm tra Kết quả của Phương thức Bất đồng bộ

Để kiểm tra xem một phương thức bất đồng bộ đã hoàn thành hay chưa, bạn có thể sử dụng Future mà phương thức đó trả về. Dưới đây là một số cách để kiểm tra kết quả.

Sử dụng await

Khi bạn gọi một phương thức bất đồng bộ, bạn có thể sử dụng await để chờ kết quả trả về trước khi thực hiện các hành động tiếp theo. Nếu phương thức không trả về bất kỳ giá trị nào (void), bạn có thể kiểm tra xem nó đã hoàn thành hay chưa bằng cách đơn giản chờ cho Future hoàn tất.

Future<void> exampleAsyncMethod() async {
  await Future.delayed(Duration(seconds: 2)); // Giả lập một tác vụ bất đồng bộ
  print('Phương thức đã hoàn thành');
}

void main() async {
  print('Bắt đầu gọi phương thức...');
  await exampleAsyncMethod(); // Chờ phương thức hoàn thành
  print('Đã kiểm tra phương thức hoàn thành.');
}

Trong ví dụ này, chúng ta định nghĩa một phương thức bất đồng bộ exampleAsyncMethod và sử dụng await để chờ nó hoàn thành. Kết quả sẽ in ra “Phương thức đã hoàn thành” trước khi in “Đã kiểm tra phương thức hoàn thành.”

Sử dụng then

Nếu bạn không muốn sử dụng await, bạn có thể sử dụng phương thức then để xử lý kết quả khi Future hoàn thành. Điều này rất hữu ích khi bạn muốn thực hiện một số hành động ngay sau khi phương thức hoàn thành.

Future<void> exampleAsyncMethod() async {
  await Future.delayed(Duration(seconds: 2));
  print('Phương thức đã hoàn thành');
}

void main() {
  print('Bắt đầu gọi phương thức...');
  exampleAsyncMethod().then((_) {
    print('Đã kiểm tra phương thức hoàn thành.');
  });
}

Trong ví dụ này, sau khi exampleAsyncMethod hoàn thành, hàm truyền vào then sẽ được gọi, in ra “Đã kiểm tra phương thức hoàn thành.”

Kiểm tra Trạng thái của Future

Nếu bạn cần kiểm tra trạng thái của một Future, bạn có thể sử dụng phương thức isCompleted hoặc isCompletedSynchronously từ đối tượng Future. Tuy nhiên, việc này thường không cần thiết trong hầu hết các trường hợp vì bạn có thể quản lý kết quả bằng cách sử dụng await hoặc then.

Tóm tắt

Để kiểm tra xem một phương thức bất đồng bộ void đã hoàn thành trong Dart, bạn có thể:

  • Sử dụng await để chờ phương thức hoàn thành trước khi tiếp tục với các hành động tiếp theo.
  • Sử dụng then để xác định hành động tiếp theo sau khi Future hoàn thành.