一种确定所有 OnStart 钩子已完成的方法
作者: Southclaws创建于 2024年11月9日更新于 2025年10月27日
这可能是由于我的使用情况而产生的一个小技巧,但我觉得它足够有用,可以提出来(也许已经存在一种实现此功能的方法)。 我一直在寻找一种方法,可以在每个 OnStart 钩子完成后执行一些代码,或者至少在我知道的某个特定钩子完成后执行。 我曾经认为钩子是按照依赖关系的顺序执行的,因此如果 A 依赖 B,那么 B 的生命周期钩子将先运行,然后才是 A 的钩子 - 但我不确定这个假设是否正确,似乎并不是如此,可能是由于并行性? **描述你想要的解决方案** 我不完全确定,额外的钩子似乎不是正确的解决方案,但也许在 `App` 上有一个类似于 Done() 的通道,这对于我的用例来说是可行的,因为只需要几个。 **描述你已经考虑过的其他方案** 我可以在感兴趣的钩子上创建自己的信号通道,这对于我的用例来说是可行的,因为只有几个。 **这是否是一个突变性更改?** 就我所知,这并不是一个突变性更改,它只是暴露出一些我假定 fx 已经知道的内容 - 但也许并不是,如果钩子是并行的。 尽管我假定它已经知道了,因为错误处理和 #1059 中的讨论。
内容来源: uber-go/fx