知识合集

哈喽,我是颜sir,询盘自由网背后的人。做网络营销快6年,运气不错,实现了财务自由,目前全职在家钻研更多赚钱方法。在钻研过程中,我发现网上几乎找不到优质的中文资源。我深知新手入门需经历痛苦挣扎,所以创建了询盘自由网,把我知道的分享给你。

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

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

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

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

Effect 怎么保证资源一定被释放?

try/finally 在异步和取消场景下管不住资源释放。这篇讲 Effect 如何用 Scope、acquireRelease 和 finalizer,让获取与释放成对、后进先出,并且在中断时同样生效。

Effect 里怎么给偶发失败的调用加重试?

用 Schedule 把重试策略写成一个独立的值:指数退避、次数上限、抖动各一个原语,组合起来贴到任何 Effect 上,不用手写循环。

Effect 里 Ref、Queue、PubSub、Semaphore 怎么选?

多个 fiber 要共享数据、互相传递工作或限制并发时,该用哪个原语?按「要解决的问题」来选:Ref 存值、Queue 派活、PubSub 广播、Semaphore 限流。

Effect 程序应该在哪里 run?

在 service 方法里就地 runPromise 看起来很省事,却会让中断、依赖和错误类型三处同时断开。这篇讲清 run 应该只发生在边缘,以及不同宿主下边缘分别在哪。

Effect 团队约定该交给机器检查,还是交给人?

约定写在文档里会过期,全做成 lint 又会被整体关掉。按「能不能被确定的程序判定」把约定分成语法、类型、依赖与语境四层,前三层交给机器,语境层留给人。

Effect 代码最常见的用歪方式有哪些?

十一种典型的 Effect 误用,每一种都能编译、能跑,却悄悄丢掉了 Effect 本该给你的某个保证。这篇讲其中最根本的七种,其余几种各有单独的文章。

Effect 从 v3 升级到 v4 要改哪些地方?

在 effect 4.0.5 上逐条核对的 v3 到 v4 迁移路线:先让编译器和 language service 列待办,再按改名、模块搬家、服务与 Schema、行为差异的顺序处理。

Effect v4 的 Schema 和 Config 有哪些改名?

Effect v4 里 Schema.decodeUnknown、Union、optionalWith、Config.string 等都变了。列出最常撞上的改名,以及 decode 含义变化这个陷阱。

Effect v4 里 Effect.Service 用什么替代?

Effect v4 里 Effect.Service、Context.Tag、Layer.scoped 都不存在了,统一用 Context.Service 与 Layer.effect。附带可运行的资源释放示例。

Effect<A, E, R> 三个参数怎么读?

用一句话读懂 Effect<A, E, R>:需要 R,可能以 E 失败,成功给 A。顺带讲清 never 在这里表示「没有」,以及为什么 R 变成 never 才能运行。

Effect.succeed 和 Effect.sync 有什么区别?

Effect.succeed(Date.now()) 每次运行拿到的是同一个时间戳,Effect.sync(() => Date.now()) 每次都重新计算。讲清两者的求值时机,以及副作用该放在哪里。