🍥구현 기능
- 특정 작업이 종료된 후, 3초 뒤에 다른 작업을 수행할 수 있도록 구현하기
🍥구현하기
build.gradle
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1")
}
TaskDelayManager 클래스
- 특정 작업 수행에 3초가 걸리도록 구현하는 클래스
- 메소드:
- delayTask3seconds(taskName:String)
특정 작업의 이름을 매개변수로 받아, 해당 작업 완료 메세지를 3초 뒤에 출력한다
class TaskDelayManager {
fun delayTask3seconds(taskName:String){
val job = kotlinx.coroutines.GlobalScope.launch{
println("${taskName} 진행 중입니다...")
delay(300)
println("${taskName} 완료되었습니다.")
}
runBlocking {
job.join()
}
}
}
➖
- 장바구니에 담기 -> 작업이 3초 소요되도록 run 함수 수정
[Burgers 메뉴 선택 화면]
1. ShackBurger - 가격 - 메뉴 설명
2. ...
b. 뒤로 가기 - 메인 화면으로 돌아갑니다.
-> 1
선택한 메뉴는 ShackBurger 입니다.
장바구니에 담기 진행 중입니다...
장바구니에 담기 완료되었습니다.
override fun run(menuResult:String){
menuItemCollection = MyKiosk.myMenu.myMenuCollections[menuResult.toInt()-1]
while(true){
val input = getInput()
if(input == "b") return
val selectedMenuItem = menuItemCollection!!.getMenuItemAt(input.toInt()-1)
println("선택한 메뉴는 ${selectedMenuItem.name} 입니다.")
MyKiosk.shoppingCart.addMenuItem(selectedMenuItem)
MyKiosk.taskDelayManager.delayTask3seconds("장바구니에 담기")
}
}
- 장바구니에서 항목 삭제 -> 작업이 3초 소요되도록 run 함수 수정
[장바구니에서 항목 삭제하기]
삭제할 항목의 번호를 입력하세요.
-> 1
장바구니에서 항목 삭제 진행 중입니다...
장바구니에서 항목 삭제 완료되었습니다.
override fun run(): String {
val input = getInput()
MyKiosk.shoppingCart.removeMenuItemAt(input.toInt() - 1)
MyKiosk.taskDelayManager.delayTask3seconds("장바구니에서 항목 삭제")
return ""
}
OrderPaymentScreen
- 입금하기, 출금하기 -> 작업이 3초 소요되도록 run 함수 수정
[주문 결제 화면]
주문하기 위해 필요한 금액은 30000원 입니다.
현재 잔고는 15000원 입니다.
추가로 입금할 금액을 입력해주세요.(단위: 원)
-> 20000
입금 진행 중입니다...
입금 완료되었습니다.
현재 잔고는 35000원 입니다.
출금 진행 중입니다...
출금 완료되었습니다.
override fun run(): String {
costSum = MyKiosk.shoppingCart.getCostSum()
balance = MyKiosk.paymentManager.getBalance()
printScreen()
while(balance < costSum) {
val money = getInput()
balance = MyKiosk.paymentManager.deposit(money.toInt())
MyKiosk.taskDelayManager.delayTask3seconds("입금")
println("현재 잔고는 ${balance}원 입니다.")
}
if(MyKiosk.paymentManager.withDraw(costSum)){
MyKiosk.taskDelayManager.delayTask3seconds("출금")
return "true"
}
return "false"
}