import { type Scope } from "https://deno.land/x/effection@3.0.0-beta.3/mod.ts";
A programatic API to interact with an Effection scope from outside of an Operation.
Most often this is used to integrate external APIs with Effection by
capturing a Scope
from a running operation with useScope, and then
using it to call back into itself from a callback.
The following example calls into Effection to implement a proxy around a google search by using express.js.
Examples
Example 1
Example 1
import { main, useScope, suspend } from "effection";
import { express } from "express";
await main(function*() {
let scope = yield* useScope();
express().get("/", (req, resp) => {
return scope.run(function*() {
let signal = yield* useAbortSignal();
let response = yield* fetch(`https://google.com?q=${req.params.q}`, { signal });
resp.send(yield* response.text());
});
});
yield* suspend();
});