์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ํ์ด์ฌ
- ์น๋์๋ณด๋ ์ ์
- ์น๋์๋ณด๋ ๊ธฐ์ด
- ์๋ฐํ๋ก๊ทธ๋๋ฐ
- db
- Streamlit๊ธฐ์ด
- ์คํธ๋ฆผ๋ฆฟ
- ํ๋ค์ค
- ์๋ฐ์คํฌ๋ฆฝํธ ๊ณต๋ถ
- Streamlit๊ธฐ๋ณธ
- ์๋๋ก์ด๋ ์คํ๋์ค
- Flutter
- java
- ์๋ฐ๊ธฐ์ด
- ์คํธ๋ฆผ๋ฆฟ ๊ธฐ๋ณธ
- MySQL
- JavaScript
- ์๋ฐ๊ณต๋ถ
- Android
- ์๋ฐ์ด๋ณด
- ์๋ฐ
- ์๋ฐ์คํฌ๋ฆฝํธ
- RESTful API
- ํ์ด์ฌ๊ณต๋ถ
- Pandas
- ์๋๋ก์ด๋ ์ฑ ๊ฐ๋ฐ
- streamlit
- ํ๋ค์ค๊ณต๋ถ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- serverless
- Today
- Total
ruriruriya
[Dart] async์ await๋ก ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ ๋ณธ๋ฌธ
[Dart] async์ await๋ก ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ
๋ฃจ๋ฆฌ์ผใ 2024. 12. 18. 15:42
Dart ์ธ์ด์์ async์ await๋ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ์ฝ๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํ ํค์๋์ด๋ค.
ํนํ ๋คํธ์ํฌ ์์ฒญ, ํ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ, ํ์ด๋จธ ๋ฑ์ ๋น๋๊ธฐ ์์
์ ์์ฐจ์ ์ผ๋ก ์์ฑํ ์ ์๋๋ก ๋์์ค๋ค.
๐ก ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ด๋?
- ํ๋ก๊ทธ๋จ์ด ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์์ ๋ฑ์ ์ํํ ๋, ํด๋น ์์ ์ด ๋๋ ๋๊น์ง ๋ค๋ฅธ ์์ ์ด ๋ฉ์ถ์ง ์๋๋ก ํ๋ ๋ฐฉ์
- Dart์์๋ Future ๊ฐ์ฒด๋ฅผ ํตํด ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ๋ค.
(Future : ๋น๋๊ธฐ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ ๊ฐ์ฒด, ๊ฒฐ๊ณผ๊ฐ ์๋ฃ๋๋ฉด ๊ฐ์ ๋ฐํํ๊ฑฐ๋, ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์์ธ๋ฅผ ๋์ ธ์ค๋ค.)
1. async์ await ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
- async : ํจ์์ ๋น๋๊ธฐ ์์
์ด ํฌํจ๋์ด ์๋ค๋ ๊ฒ์ ๋ปํ๋ ํจ์๋ก, ํญ์ Future ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
- await : ๋น๋๊ธฐ ์์
(Future)์ ๊ธฐ๋ค๋ฆฐ๋ค๋ ๋ป์ผ๋ก, await๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ์์
์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ ํ ๋ค์ ์ฝ๋๋ฅผ ์คํํ๋ค.
์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์
- await๋ ํญ์ async ํจ์ ์์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค. await ๋จ๋ ์ผ๋ก ์ฌ์ฉํ ์ ์์.
- ๊ทธ๋ฆฌ๊ณ await๊ฐ ํ์ํ์ง ์์ ๋ ์ฐ๋ฉด ์ฝ๋๊ฐ ๋๋ ค์ง ์๋ ์๋ค.
์๋ ์ฝ๋๋
fetchData ํจ์๋ ๋น๋๊ธฐ๋ก ์คํ๋๊ณ , 2์ด ๋๊ธฐ ํ "๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ต๋๋ค!"๋ฅผ ์ถ๋ ฅํ๋ค.
๊ทธ๋์ main ํจ์์ ๋ค๋ฅธ ์์
์ ๋ฉ์ถ์ง ์๊ณ ์งํ๋๋ค.
Future<void> fetchData() async {
print("๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ค...");
await Future.delayed(Duration(seconds: 2)); // 2์ด ๋๊ธฐ
print("๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ต๋๋ค!");
}
void main() {
fetchData();
print("๋ค๋ฅธ ์์
์งํ ์ค...");
}
์ถ๋ ฅ ๊ฒฐ๊ณผ
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ค...
๋ค๋ฅธ ์์
์งํ ์ค...
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ต๋๋ค!
2. ์์ฐจ์ ์ผ๋ก ๋น๋๊ธฐ ์์ ์ฒ๋ฆฌ
await๋ฅผ ์ฌ์ฉํด์ ์์ฐจ์ ์ผ๋ก ์์ ์ ์ฒ๋ฆฌํ ์ ์๋ค.
Future<void> task1() async {
print("์์
1 ์์");
await Future.delayed(Duration(seconds: 1));
print("์์
1 ์๋ฃ");
}
Future<void> task2() async {
print("์์
2 ์์");
await Future.delayed(Duration(seconds: 2));
print("์์
2 ์๋ฃ");
}
Future<void> main() async {
await task1();
await task2();
print("๋ชจ๋ ์์
์๋ฃ");
}
์ถ๋ ฅ๊ฒฐ๊ณผ
์์
1 ์์
์์
1 ์๋ฃ
์์
2 ์์
์์
2 ์๋ฃ
๋ชจ๋ ์์
์๋ฃ
3. ๋ณ๋ ฌ์ฒ๋ฆฌ
Future.wait๋ฅผ ์ฌ์ฉํด์ ์ฌ๋ฌ ๋น๋๊ธฐ ์์ ์ ๋์์ ์คํํ ์ ์๋ค.
Future<void> task1() async {
print("์์
1 ์์");
await Future.delayed(Duration(seconds: 1));
print("์์
1 ์๋ฃ");
}
Future<void> task2() async {
print("์์
2 ์์");
await Future.delayed(Duration(seconds: 2));
print("์์
2 ์๋ฃ");
}
Future<void> main() async {
await Future.wait([task1(), task2()]);
print("๋ชจ๋ ์์
์๋ฃ");
}
์ถ๋ ฅ ๊ฒฐ๊ณผ
์์
1 ์์
์์
2 ์์
์์
1 ์๋ฃ
์์
2 ์๋ฃ
๋ชจ๋ ์์
์๋ฃ