fp-ts有任何功能来执行带超时的while循环(堆栈安全)吗?像尾巴递归,Y组合器之类的。我见过ChainRec,但除了函数签名之外,实际上没有任何文档。
确切的问题:我需要等待数据库(postgres)在码头容器中启动。我决定通过编写一个循环来确定这一点,该循环扫描docker logs输出的特定正则表达式,每个n毫秒,如果匹配正则表达式或达到超时,则循环停止。超时值、正则表达式和n都是参数。
或者,最好做docker logs --follow并处理STDIN流。但我也不知道该怎么做。
试图在数据库中执行一些东西而不是扫描日志是行不通的。由于某些原因,postgres在引导过程中变得可用,然后在它最终完全启动之前再次变得不可用,在日志中留下一条消息。
发布于 2022-03-17 12:45:32
一种实用的方法是使用带有承诺的setInterval:
await new Promise((resolve) => {
const a = setInterval(() => {
if(serviceIsAvailable()) {
clearInterval(a)
resolve(true)
}
}, 500)
})如果需要,您可以添加一个reject案例,一个截止日期(如果在XYZ秒之后不满意,则拒绝),等等。
https://stackoverflow.com/questions/71295448
复制相似问题