Effect.interrupt
特定のFiber (Effect)を明示的に中断できる
中断が発生すると、FiberのIDや開始時刻といった詳細情報がキャプチャされる
キャプチャ内容は、Effect.runPromiseExitなどを使えば確認できる
例
code:ts
import { Effect } from "effect"
const program = Effect.gen(function* () {
console.log("start")
yield* Effect.sleep("2 seconds")
yield* Effect.interrupt
console.log("done")
return "some result"
})
Effect.runPromiseExit(program).then(console.log)
そうですかmrsekut.icon
Effect.onInterrupt
複数のEffectを並列に実行しているときは、1つが中断されると全てが中断される
Effect.forEachなど
https://effect.website/docs/concurrency/basic-concurrency/#interruption-of-concurrent-effects