Сроки обещаний в R

Я измеряю простую функцию, которая ждет 1 секунду, а затем печатает число. Обернув его обещанием, я ожидал, что обещания будут выполняться после того, как время будет завершено, что, похоже, не происходит. Насколько я понимаю, промисы позволяют запускать следующий код без завершения. Что мне не хватает?

      library(tictoc)
library(promises)
library(purrr)

slow_fun <- function(x){
  Sys.sleep(1)
  print(paste("Test:", x))
}

promise_fun <- function(x){
  future_promise(
    slow_fun(x)
  ) 
}

my_nums <- 1:5

{
  tic("Sequential run")
  my_nums %>% map(slow_fun)
  toc()  
}
# Sequential run: 5.09 sec elapsed

{
  tic("Promise run")
  my_nums %>% map(promise_fun)
  toc()  
}
# Promise run: 5.46 sec elapsed  <---- was expecting < 1 second
# with print statements occuring after the timer finished 
# (they occurred before the timer).

0 ответов

Другие вопросы по тегам