Newer version available
You’re viewing the API reference for version 3.3.0, but the latest version is 3.4.0. The latest version include may important updates and fixes.
View Latest Versionfunction 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>