Raku의 at — 특정 시각에 완료되는 Promise

Raku의 at — 특정 시각에 완료되는 Promise

지금으로부터 몇 초 뒤, 혹은 특정 시각이 되면 완료되는 작업이 필요할 때가 있어요. Promise.at은 그런 용도에 맞는 메서드예요. 지정한 시각에, 혹은 그 직후에 완료되는 새 Promise를 만들어 줘요.

method at(Promise:U: $at, :$scheduler = $*SCHEDULER --> Promise:D)

주어진 시간 —— Instant 또는 그에 상당하는 Numeric으로 주는 —— $at 시각에, 또는 그 이후 가능한 한 빨리 완료되는 새 Promise를 돌려줘요.

my $p = Promise.at(now + 2).then({ say "2 seconds later" });
# do other stuff here

await $p;  # wait here until the 2 seconds are over

만약 주어진 시각이 이미 과거라면, 지금(now)으로 취급해서 돌려받은 Promise를 곧바로 완료시켜요. 다만 이런 상황은 reactwhenever 블록으로 처리하는 편이 더 명확할 때가 많다는 점도 알아두면 좋아요.

출처: Raku 공식 문서 — at

본문

  • $at 시각(Instant 또는 동등한 Numeric)에 완료되는 새 Promise를 돌려줘요.
  • 시간이 과거면 즉시 완료된 Promise처럼 취급돼요.
  • 스케줄러는 기본값으로 $*SCHEDULER를 쓰며, :$scheduler로 바꿀 수 있어요.
  • 지연 실행이 필요할 땐 then으로 이어주면 자연스럽고, 복잡한 흐름은 react/whenever 블록이 더 명확할 수 있어요.