본문 바로가기
개발

Dart에서 몇초간 지연, 대기하기

by 멍멍도 2023. 4. 10.

Dart에서 sleep() 함수를 사용하여 일정 시간 코드 실행을 지연, 대기시킬 수 있습니다.

 

예제를 통해 sleep() 사용 방법을 알아보겠습니다.

 

1초 지연

sleep(Duration(seconds: N))은 N초만큼 지연을 시킵니다.

아래와 같이 for문과 sleep() 함수를 이용하여 어떤 작업을 1초 간격으로 처리되도록 만들 수 있습니다.

import 'dart:async';

void main() {
  for (int i = 0; i < 10; i++) {
    print('처리 중... $i');
    sleep(Duration(seconds: 1)); // 1초 동안 실행 지연
  }
}

 

1초마다 숫자 출력

 

Timer.periodic(Duration(seconds: 1), function)은 1초마다 function을 수행하는 타이머입니다.

1초마다 동작하는 타이머를 실행시키고, Main 쓰레드에서는 sleep(Duration(seconds: 10))으로 10초를 대기하면, 타이머가 10초동안 동작하게 됩니다.

import 'dart:async';

void main() {
  int count = 0;
  Timer.periodic(Duration(seconds: 1), (timer) {
    print(count);
    count++;
  });
  
  sleep(Duration(seconds: 10)); // 10초 동안 실행 지연
}

 

async에서 지연

async에서 지연을 하려면 await을 사용해야 합니다.

아래와 같이 Future.delayed(Duration(seconds: 5)); 로 지연을 시킬 수 있습니다.

import 'dart:io';

void main() {
  downloadFile().then((result) {
    print('파일 다운로드가 완료되었습니다.');
  });
}

Future<bool> downloadFile() async {
  print('파일 다운로드를 시작합니다.');
  await Future.delayed(Duration(seconds: 5)); // 5초 동안 실행 지연
  print('파일 다운로드가 완료되었습니다.');
  return true;
}

댓글