【发布时间】:2021-07-01 13:06:41
【问题描述】:
我在看promises package,但我不知道如何真正让承诺做任何事情。所有可用的阻塞机制(如promise_all)都会返回一个promise,而且似乎没有明显的方法可以让promise 一开始就执行。例如,给定以下代码 sn -p:
library(promises)
p <- promise(~ {
print("executing promise")
}) %>% then(~ {
print("promise is done")
})
print("we are here")
done <- FALSE
all_promises <- promise_all(p) %>% then(~ {
print("all promises done")
done <<- TRUE
})
# output:
# [1] "executing promise"
# [1] "we are here"
我如何实际调用承诺链?
奇怪的是,如果我将第一个承诺更改为 future_promise 并添加一个运行循环,如下所示
while(!done) {
later::run_now()
Sys.sleep(0.01)
}
promise 链正确执行。但是,这不适用于常规承诺。
我错过了什么?看来系统缺少执行者,但我在哪里获得执行者?我在包本身中看不到任何内容,也没有用于查询我可以看到的承诺的用户可见 API。
【问题讨论】:
标签: r asynchronous promise r-promises