`redux-saga` maintainer here.<p>I've been using `effection` to build a replacement for `redux-saga` over at <a href="https://github.com/neurosnap/starfx">https://github.com/neurosnap/starfx</a><p>Effection has demonstrated to me how truly powerful delimited continuations are and why structured concurrency is an incredible asset for anything that requires async flow control -- basically everything in TS/JS.<p>I know sometimes it's hard to imagine why someone would need structured concurrency or care about delimited continuations for a front-end application, but this is a game changer in terms of expressing async flow control.<p>Some things to note about Effection:<p>- API surface area is small <a href="https://github.com/thefrontside/effection/issues/851">https://github.com/thefrontside/effection/issues/851</a><p>- It tries to stay as close to JS constructs as possible so it will feel very familiar<p>- Resource cleanup is automatic (when a function passes out of scope all descendent tasks are shut down automatically)<p>- End-user doesn't need to think about delimited continuations<p>The only leap users need to learn coming from async/await is the syntax.<p><pre><code> import { main, call } from "effection";
await main(function*() {
const response = yield* call(fetch("my-api.com"));
const data = yield* call(response.json);
});
</code></pre>
In this way, effection is very approachable and I highly recommend people try it out.
Here is an example of using Effection with React to build a sophisticated loader <a href="https://github.com/taras/effection-react-loadingspinner">https://github.com/taras/effection-react-loadingspinner</a>