Skip to content

Commit 75d5fe3

Browse files
authored
Update 0957-modernized-scheduler.md
1 parent 8923272 commit 75d5fe3

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

text/0957-modernized-scheduler.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,30 @@ class extends Component {
456456
}
457457
```
458458

459+
an example of building a cancellation primitive
460+
```ts
461+
const cbs = new Map();
462+
463+
function renderWithCancel(fn) {
464+
let cancel = getToken();
465+
cbs.add(cancel, fn);
466+
467+
scheduleRender(cancel, fn);
468+
return cancel;
469+
}
470+
471+
async function scheduleRender(cancel, fn) {
472+
await render();
473+
if (!cbs.has(cancel)) return;
474+
cbs.get(cancel)();
475+
}
476+
477+
function cancelRender(token) {
478+
cbs.delete(token);
479+
}
480+
```
481+
482+
459483
Libraries or the framework may desire to provide sugar for automated cleanup,
460484
and can do so over this much simpler primitive.
461485

0 commit comments

Comments
 (0)