No Bun, objetos Response podem aceitar uma função geradora assíncrona como seu corpo. Isso permite que você faça stream de dados para o cliente conforme eles se tornam disponíveis, em vez de esperar que toda a resposta esteja pronta.
ts
Bun.serve({
port: 3000,
fetch(req) {
return new Response(
// Uma função geradora assíncrona
async function* () {
yield "Hello, ";
await Bun.sleep(100);
yield "world!";
// você também pode yieldar um TypedArray ou Buffer
yield new Uint8Array(["\n".charCodeAt(0)]);
},
{ headers: { "Content-Type": "text/plain" } },
);
},
});Você pode passar qualquer iterável assíncrono diretamente para Response:
ts
Bun.serve({
port: 3000,
fetch(req) {
return new Response(
{
[Symbol.asyncIterator]: async function* () {
yield "Hello, ";
await Bun.sleep(100);
yield "world!";
},
},
{ headers: { "Content-Type": "text/plain" } },
);
},
});