标签:Effect

共 169 篇文章带有这个标签。

Effect 里怎么给已有的服务加日志?

用一个依赖自己所提供服务的 Layer 包装原实现,原实现一行不改。这篇用 UserRepo 的日志装饰层讲清写法和组装顺序。

Effect 的 Queue 和 PubSub 有什么区别?

都是一个 fiber 发、别的 fiber 收,Queue 是把任务分给消费者,PubSub 是把事件广播给所有订阅者。讲清两者的语义、缓冲策略和 PubSub 的订阅时序。

Effect 里怎么用 Semaphore 限制并发数?

用 Semaphore.make 创建许可,再用 withPermits 包裹要限流的 Effect,就能让一百个调用同时发起、同一时刻只有 n 个在执行。也讲清它限制的是并发度而不是速率。

Effect v4 怎么标注 API 的稳定性?

Effect 4.0.5 不再用 effect/unstable 路径,而是用每个导出上的 @stability 标签表达稳定性。这篇讲三种标签的含义、这样设计的好处,以及路径里没有 unstable 带来的新陷阱。

Effect 4.0.5 里哪些模块仍是 unstable?

按 effect 4.0.5 的 @stability 标签扫描结果,列出整个模块都是 unstable 的目录、整体 stable 但个别声明不是的 mixed 模块,以及 experimental 模块。

什么时候不该用 Effect Stream?

Stream 多一层抽象、多一套 API。数据量小、单次请求、需要广播共享或按元素协调状态时,更简单的工具更合适。

TypeScript 里依赖藏在 import 里有什么问题?

把数据库、邮件客户端写成模块级单例,签名读不出依赖,测试和替换都只能整个文件地换。手动传参和 DI 容器各解决一半,Effect 的 R 参数把两半合在一起。

Effect 的服务接口该怎么设计?

接口按能力而不是技术划分,方法不带 R,错误只暴露调用方能处理的,key 用 包名/服务名。还有哪些东西不必做成服务。

Effect 测试里该共享 Layer 吗?

每个测试各自 provide 一份 Layer 最隔离,但构建贵的资源会重复构建。@effect/vitest 的 layer 可以让一个 describe 块共享一次构建,代价是共享状态。

Effect 的超时和重试怎么测,才不用真等?

被测代码有 5 秒超时或重试退避,测试要么真等,要么把时间调短。用 it.effect 自带的 TestClock,fork 出去再推进虚拟时间,测的就是线上用的那个超时。

Effect 怎么做轮询和定时重复?

Effect.repeat 是 retry 的镜像:成功之后再来一次。用 Schedule.spaced 配 until 条件就是一个轮询,同一个 Schedule 值也能喂给 retry。