작업 가져오기
- 특정 날짜에 결석한 학생 테이블에서 학생 정보 가져오기
- 물리학을 공부하는 학생 목록 가져오기
// 결석 학생 목록을 가져오는 suspension 함수를 정의합니다.
stop fun getAbsentStudents (date: Date ) : List<Student> {
// 결석 학생 목록을 가져오기 위해 장기 실행 작업을 수행합니다
. // 결석 학생 목록을 반환합니다
. }
// 물리학을 공부하는 학생 목록을 가져오기 위해 일시 중지 함수를 정의합니다.
suspens fun getPhysicsStudents () : List<Student> {
// 물리학을 공부하는 학생 목록을 가져오기 위해 장기 실행 작업을 수행합니다.
// 물리학 학생 목록을 반환합니다.
}
/ / 두 가지 정지 함수의 실행을 병렬화하는 흐름을 정의합니다.
fun getAbsentAndPhysicsStudents (date: Date ) : Flow<Pair<List<Student>, List<Student>>> = flow {
val absentStudents = async { getAbsentStudents(date) }
val PhysicsStudents = async { getPhysicsStudents() }
emit(absentStudents.await() toPhysicsStudents.await())
}
// Flow의 결과를 수집합니다.
fun main ( ) {
runBlocking {
getAbsentAndPhysicsStudents(Date())
.collect { (absentStudents, physicsStudents) ->
// 결석 및 물리학 학생 처리
}
}
}
- runblocking은 해당 스레드가 실행될동안 다른거 다 멈추는 블록
- 주의해서 사용하고, 코루틴에선 사용 못 함
작업 합치기
// 결석 학생 목록을 가져오는 suspension 함수를 정의합니다.
stop fun getAbsentStudents (date: Date ) : List<Student> {
// 결석 학생 목록을 가져오기 위해 장기 실행 작업을 수행합니다
. // 결석 학생 목록을 반환합니다
. }
// 물리학을 공부하는 학생 목록을 가져오기 위해 일시 중지 함수를 정의합니다.
suspens fun getPhysicsStudents () : List<Student> {
// 물리학을 공부하는 학생 목록을 가져오기 위해 장기 실행 작업을 수행합니다.
// 물리학 학생 목록을 반환합니다.
}
/ / zip 연산자를 사용하여 두 개의 정지 함수를 결합하는 흐름을 정의합니다.
fun getAbsentAndPhysicsStudents (date: Date ) : Flow<Pair<List<Student>, List<Student>>> = flow {
val absentStudents = flow {emit(getAbsentStudents( date)) }
valPhysicsStudents = flow {emit(getPhysicsStudents()) }
emit(absentStudents.zip(physicsStudents) { 없음, 물리학 -> 물리학 없음 }.single()) }
//
Flow 결과 수집
fun main () {
runBlocking {
getAbsentAndPhysicsStudents(Date())
.collect { (absentStudents,PhysicsStudents) ->
// 결석 및 물리학 학생 처리
}
}
}
Uploaded by N2T