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;
}
'개발' 카테고리의 다른 글
Dart - 리스트 중복 요소 제거 방법 (0) | 2023.04.17 |
---|---|
Dart - Map 정렬 방법 (key, value 정렬) (0) | 2023.04.16 |
Dart - List 복사하는 방법 (0) | 2023.04.15 |
[Dart] 리스트 2개 하나로 합치기 (0) | 2023.04.13 |
댓글