Synchronous Programming서버 응답이 올 때까지 CPU 사용 불가
void main() {
addNumbers(1, 1);
addNumbers(2, 2);
}
// 1 + 1 = 2
// 2 + 2 = 4
void addNumbers(int number1, number2) {
print('계산중: $number1 + $number2');
print('계산 완료: $number1 + $number2');
}
void main() {
//Future = 미래
// 미래에 받아 올 값
Future<String> name = Future.value('에스파');
Future<int> number = Future.value(4);
Future<bool> isTrue = Future.value(true);
addNumbers(1, 1);
addNumbers(2, 2);
}
// 1 + 1 = 2
// 2 + 2 = 4
void addNumbers(int number1,int number2) {
print('계산 시작: $number1 + $number2');
//서버 시뮬레이션
Future.delayed(Duration(seconds: 2), (){
print('계산 완료: $number1 + $number2 =
${number1+number2}');
});
print('함수 완료');
}
Future.delayed를 사용 하여 2초 후 함수를 실행하게 하고 2초 동안 멈춰 있지 않고 나머지 다른 함수를 실행 하였다.
void main() {
//Future = 미래
// 미래에 받아 올 값
Future<String> name = Future.value('에스파');
Future<int> number = Future.value(4);
Future<bool> isTrue = Future.value(true);
addNumbers(1, 1);
addNumbers(2, 2);
}
// 1 + 1 = 2
// 2 + 2 = 4
void addNumbers(int number1,int number2) async {
print('계산 시작: $number1 + $number2');
//서버 시뮬레이션
await Future.delayed(Duration(seconds: 2), (){
print('계산 완료: $number1 + $number2
= ${number1+number2}');
});
print('함수 완료: $number1 + $number2');
}
await 를 사용 하면 함수안의 await를 포함한 나머지 함수를 2초 후 모두 실행 하게 한다. 하지만 2초 멈춰 있는 것이 아니기 때문에 다른 함수는 바로 실행 할 수 있다.
void main() {
addNumbers(1, 1);
print('다른 명령은 바로 실행 한다.');
}
void addNumbers(int number1,int number2) async {
print('계산 시작: $number1 + $number2');
//서버 시뮬레이션
await Future.delayed(Duration(seconds: 2), (){
print('계산 완료: $number1 + $number2 =
${number1+number2}');
});
print('함수 완료: $number1 + $number2');
}
await 를 사용 하면 함수안의 await를 포함한 나머지 함수를 2초 후 모두 실행 하게 한다. 하지만 2초 멈춰 있는 것이 아니기 때문에 다른 함수는 바로 실행 할 수 있다.
void main() async{
await addNumbers(1, 1);
print ('하나의 함수가 끝나고 시작');
await addNumbers(2, 2);
}
Future<void> addNumbers
(int number1, int number2) async {
print('계산 시작: $number1 + $number2');
//서버 시뮬레이션
await Future.delayed(Duration(seconds: 2), (){
print('계산 완료: $number1 + $number2 =
${number1+number2}');
});
print('함수 완료: $number1 + $number2');
}
함수 하나가 2초 후 끝나고 순차적으로 실행 되게 하려면 좌측과 같이 작성 하면 된다.
void main() async {
final result1 = await addNumbers(1, 1);
final result2 = await addNumbers(2, 2);
print('result1: $result1');
print('result2: $result2');
print('result1 + result1 : ${result1 + result2}');
}
Future<int> addNumbers(int number1, int number2) async {
print('계산 시작: $number1 + $number2');
//서버 시뮬레이션
await Future.delayed(Duration(seconds: 2), () {
print('계산 완료: $number1 + $number2 = ${number1 + number2}');
});
print('함수 완료: $number1 + $number2');
return number1 + number2;
}
미래에 받을 값의 형식을 정해주고 값을 리턴 하게 되면 변수에 결과 값을 저장 할 수 있다.
5. Dart 3.0 업데이트 문법 (0) | 2023.09.12 |
---|---|
4-2. Asynchronous Programming (비동기 프로그래밍) (0) | 2023.09.08 |
3. Functional Programming (함수형 프로그래밍) (0) | 2023.09.05 |
2. 객체지향 프로그래밍 2 (0) | 2023.09.05 |
2. 객체지향 프로그래밍 1 (0) | 2023.09.01 |