标签:Effect

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

Effect 怎么只重试特定的错误?

用 Effect.retry 的 while 条件按错误类型筛选,只重试网络抖动和限流,不重试校验失败和资源不存在;缺陷和中断本来就不会被重试。

Effect 里 timeout 和 retry 谁包着谁?

timeout 放在 retry 里面,限制的是每次尝试;放在外面,限制的是总预算。这篇讲清两种写法的差别,以及超时后底层请求到底有没有被取消。

Effect.tx 事务体里有哪些坑?

Effect.tx 的事务体会重跑,里面的副作用会重复;内层事务失败也不会单独回滚。这篇用可运行的代码把这几个坑摆出来。

Effect.txRetry 怎么让事务等条件满足?

事务里余额不足、队列为空时,不用轮询也不用手拼 Deferred,一行 Effect.txRetry 就能让事务阻塞到相关状态变化。

已经有 async/await 了,为什么还要用 Effect?

async 函数的签名只写了成功值,失败方式、依赖、取消都在类型之外。这篇说明 Effect 怎样用 Effect<A, E, R> 把它们写进类型,以及它值不值得用。

Effect 和 Promise 有什么区别?

Promise 创建时就已经在执行,Effect 创建时什么都不会发生。这篇讲清 Effect 是「描述」而不是「过程」,以及它为什么能重试、能被运行器接管。

怎么用 Effect.gen 写出第一段 Effect 程序?

用 Effect.gen 把顺序逻辑写得像 async/await,yield* 负责运行与错误传播,E 和 R 自动累积。再讲 gen 与 pipe 的分工,以及 Effect.fn 命名函数。

Effect 里的 failure 和 defect 怎么区分?

Effect 把出错分成进类型的 failure 和不进类型的 defect。这篇给出一个判断标准,并讲清 Effect.fail、Effect.die 和 Effect.try 各自落在哪条通道。

Effect 里的错误该由哪一层处理?

有了类型化错误之后,真正的难题是归属:谁来捕获、谁来决策、谁来呈现。这篇给出一套按「谁有足够上下文」划分的判断方法。

用 Effect Schema 怎么把领域规则写进类型?

形状正确的数据,含义仍可能是错的。用 transform、brand、判别联合三个工具,把外部表示、值的身份和合法状态写进 Schema,让运行时和类型系统共用同一份规则。

Effect 的 Layer 是什么,依赖图怎么组装?

Layer 是「构建一个服务的配方」,用 Layer<ROut, E, RIn> 同时写明产物、构建失败和构建所需。这篇讲清它的构造方式、三个组合子,以及依赖图只构建一次的含义。

Effect.all 和 Effect.forEach 怎么控制并发度?

Effect.all 和 Effect.forEach 默认是顺序执行,并发度要靠 concurrency 选项显式给出。这篇讲清它能填什么值,以及对数量由数据决定的列表该怎么填。