Dart

Dart(9) async programming

같이긍뱅와 2022. 8. 9. 19:37

1. Future

변수를 비동기적으로 받아올 수 있게 한다.

delayed는 JS의 setTimeout과 비슷하다. 

2초를 기다리는 동안 아래의 print()가 먼저 실행된다.

 

2. asyn/await

JS의 그것과 비슷하다. JS에서 Promise를 return하는 함수만 await를 할 수 있듯 Dart에선 Future를 return하는 함수만 

await를 붙일 수 있다.

await가 붙은 부분이 완료되기 전까지 아래부분이 실행되지 못하게 하지만 CPU가 놀고 있는것은 아니기 때문에

기다리는동안 두번재 addNum이 실행된다.

 

addNum을 Future를 return하도록 하고 실행시 await를 붙여 함수가 순차적으로 실행될 수 있게 한다.

 

3. stream

값을 여러번 받는다.

한번에 여러개를 받고 싶으면 asBroadcastStream()을 붙여준다.

이런식의 응용도 가능하다.

 

3-1. stream활용

*표시 주목 

return시 함수가 그대로 끝나버리는 문제점 보완

 

1초 마다 caculate1, 2 동시 수행
1초마다 하나씩 순서대로 출력됨