2017-10-07 20 views
1

Scala.js에서 Future 내부에서 잠들 수 있습니까? 같은Scala.js의 Future 내부에서 잠을 자다

뭔가 :

Future { 
    Thread.sleep(1000) 
    println("ready") 
} 

그때이하려고하면 나는 예외가 sleep 방법이 존재하지 않는다고 말하는 얻을.

차단할 수 없는데도 JS : What is the JavaScript version of sleep()?에서 잠들 수있는 것처럼 보입니다.

+0

링크 된 솔루션에서'pausecomp'을 사용하십시오 :) (나는 당신이 왜 대부분의 시간을 원하지 않는지 완전히 알고 있다고 가정합니다). – gzm0

+0

아래에 주어진 답변은 완벽하게 훌륭하다고 생각하며 누군가가 미래를 미루고 싶을 때 언제든지 사용해서는 안되는 이유가 없습니다. – jhegedus

답변

3

당신은 정말 앞으로 몸의 중간에 일시 중지 할 수 없습니다,하지만 당신은 당신이로 정의 할 수 있습니다 "지연"미래에 후속으로 당신의 미래를 등록 할 수 있습니다 : 당신이 다음 수를

def delay(milliseconds: Int): Future[Unit] = { 
    val p = Promise[Unit]() 
    js.timers.setTimeout(milliseconds) { 
    p.success(()) 
    } 
    p.future 
} 

val readyLater = for { 
    delayed <- delay(1000) 
} yield { 
    println("ready") 
} 
+0

많은 감사합니다! 아주 좋은! – jhegedus

+0

실제로 특정 시간 동안 잠을 자고 싶은지 또는 "나중에"(테스트를 위해 자주 필요함) 일이 발생하는지에 따라 jsExt 라이브러리의 notYet 함수에 주목하십시오.이 함수는 느슨한 버전입니다. https : //github.com/jducoeur/jsext –

+0

흠 ... 너 무슨 뜻인지 모르겠다 ... 나중에? 누가 나중에 결정합니까? 나중에 무엇에 관해서? 당신은 모범이 있습니까? – jhegedus