diff options
author | Florian Dold <florian@dold.me> | 2021-08-20 13:31:04 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2021-08-20 13:31:04 +0200 |
commit | f066f2ae56968020d986fbd79bf20f583e2ea6f8 (patch) | |
tree | 4e647c33afab65947cc5dfece08ec13d0507a4bb /examples/02-fibonacci/index.ts | |
download | node-vendor-f066f2ae56968020d986fbd79bf20f583e2ea6f8.tar.gz node-vendor-f066f2ae56968020d986fbd79bf20f583e2ea6f8.tar.bz2 node-vendor-f066f2ae56968020d986fbd79bf20f583e2ea6f8.zip |
Squashed 'cancellationtoken/' content from commit 3e4d826
git-subtree-dir: cancellationtoken
git-subtree-split: 3e4d826d0b0f421cbc303942142f281b25a8021f
Diffstat (limited to 'examples/02-fibonacci/index.ts')
-rw-r--r-- | examples/02-fibonacci/index.ts | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/examples/02-fibonacci/index.ts b/examples/02-fibonacci/index.ts new file mode 100644 index 0000000..3617495 --- /dev/null +++ b/examples/02-fibonacci/index.ts @@ -0,0 +1,24 @@ +import CancellationToken from 'cancellationtoken' + +const {cancel, token} = CancellationToken.create() +fibonacci((n, fib) => { + console.log(`F(${n}) = ${fib}`) + if (n >= 9) cancel() +}, token) + +// keep passing n and F(n) to the callback until the token is cancelled +function fibonacci(cb: (n: number, fib: number) => void, token: CancellationToken): void { + let n: number = 0 + let fib: number = 1 + let next: number = 1 + + setTimeout(generateNext, 0) + + function generateNext() { + if (token.isCancelled) return + cb(n, fib) + ;[fib, next] = [next, fib + next] + ++n + setTimeout(generateNext, 0) + } +} |