From d5463669076ea5e9f2c401850187291b7ecb0c42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20L=C3=B3pez=20de=20la=20Franca=20Beltran?= Date: Fri, 19 Apr 2024 15:00:59 +0200 Subject: [PATCH] Add k6/experimental/streams example Co-authored-by: oleiade --- examples/experimental/streams.js | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 examples/experimental/streams.js diff --git a/examples/experimental/streams.js b/examples/experimental/streams.js new file mode 100644 index 00000000000..29453f16c01 --- /dev/null +++ b/examples/experimental/streams.js @@ -0,0 +1,34 @@ +import { ReadableStream } from 'k6/experimental/streams' +import { setTimeout } from 'k6/timers' + +function numbersStream() { + let currentNumber = 0 + + return new ReadableStream({ + start(controller) { + const fn = () => { + if (currentNumber < 5) { + controller.enqueue(++currentNumber) + setTimeout(fn, 1000) + return; + } + + controller.close() + } + setTimeout(fn, 1000) + }, + }) +} + +export default async function () { + const stream = numbersStream() + const reader = stream.getReader() + + while (true) { + const { done, value } = await reader.read() + if (done) break + console.log(`received number ${value} from stream`) + } + + console.log('we are done') +}