Effect 里怎么用 Context.Service 把依赖写进类型?
用 Context.Service 定义服务接口,业务代码 yield* 取用,依赖自动记进 Effect 的 R 参数,实现留到入口用 Effect.provide 提供。换实现不用改业务代码。
共 35 篇文章带有这个标签。
用 Context.Service 定义服务接口,业务代码 yield* 取用,依赖自动记进 Effect 的 R 参数,实现留到入口用 Effect.provide 提供。换实现不用改业务代码。
Layer 是「构建一个服务的配方」,用 Layer<ROut, E, RIn> 同时写明产物、构建失败和构建所需。这篇讲清它的构造方式、三个组合子,以及依赖图只构建一次的含义。
直接读 process.env 会把缺项、格式错和密钥泄漏都拖到运行时。这篇讲 Effect 的 Config 怎么把配置变成启动时就校验好的依赖。
用 vi.mock 替换模块,路径一改测试就悄悄失效。Effect 里依赖是服务,替身只是另一个 Layer,这篇讲替身怎么写、失败怎么断言。
用 async/await 的视角讲清 Effect 的 fiber 和结构化并发:子 fiber 的生命周期被包含在父 fiber 之内,以及 forkChild、Fiber.join、Fiber.interrupt 三个基本动作。
Effect.all 和 Effect.forEach 默认是顺序执行,并发度要靠 concurrency 选项显式给出。这篇讲清它能填什么值,以及对数量由数据决定的列表该怎么填。
try/finally 在异步和取消场景下管不住资源释放。这篇讲 Effect 如何用 Scope、acquireRelease 和 finalizer,让获取与释放成对、后进先出,并且在中断时同样生效。
用 Schedule 把重试策略写成一个独立的值:指数退避、次数上限、抖动各一个原语,组合起来贴到任何 Effect 上,不用手写循环。
Stream 是「多值的 Effect」:惰性、类型化、可中断,靠拉取式运行获得背压。这篇讲它和 Effect 的关系、背压怎样工作,以及构造、变换、消费三步怎么写。
多个 fiber 要共享数据、互相传递工作或限制并发时,该用哪个原语?按「要解决的问题」来选:Ref 存值、Queue 派活、PubSub 广播、Semaphore 限流。
在 service 方法里就地 runPromise 看起来很省事,却会让中断、依赖和错误类型三处同时断开。这篇讲清 run 应该只发生在边缘,以及不同宿主下边缘分别在哪。
Effect 把日志、span 和指标都做成内置能力,但工具不会替你决定该看什么。先分清三种信号各回答什么问题,再决定在哪些边界上挂它们。
HTTP、SQL、RPC 都是跨进程调用,面对同样的四个问题。这篇讲 Effect 怎样用同一个形状处理它们,并用 HttpClient 写出一个带超时和错误翻译的完整例子。
约定写在文档里会过期,全做成 lint 又会被整体关掉。按「能不能被确定的程序判定」把约定分成语法、类型、依赖与语境四层,前三层交给机器,语境层留给人。
十一种典型的 Effect 误用,每一种都能编译、能跑,却悄悄丢掉了 Effect 本该给你的某个保证。这篇讲其中最根本的七种,其余几种各有单独的文章。