Version 3.0.3 is behind the current release: jump to latest version (3.1.0).
function ensure
thefrontside/effectionfunction ensure(fn: () => Operation<unknown> | void): Operation<void>
Run the given function or operation when the current operation
shuts down. This is equivalent to running the function or operation
in a finally {}
block, but it can help you avoid rightward drift.
Examples
Example 1
import { main, ensure } from 'effection';
import { createServer } from 'http';
await main(function*() {
let server = createServer(...);
yield* ensure(() => { server.close() });
});
Note that you should wrap the function body in braces, so the function
returns undefined
.
Example 2
import { main, ensure, once } from 'effection';
import { createServer } from 'http';
await main(function*() {
let server = createServer(...);
yield* ensure(function* () {
server.close();
yield* once(server, 'closed');
});
});
Your ensure function should return an operation whenever you need to do
asynchronous cleanup. Otherwise, you can return void
Parameters
fn: () => Operation<unknown> | void
- a function which returns an Operation or void
Return Type
Operation<void>