Dans Bun, les objets Response peuvent accepter une fonction génératrice asynchrone comme corps. Cela vous permet de streamer des données vers le client au fur et à mesure qu'elles sont disponibles, plutôt que d'attendre que la réponse entière soit prête.
ts
Bun.serve({
port: 3000,
fetch(req) {
return new Response(
// Une fonction génératrice asynchrone
async function* () {
yield "Hello, ";
await Bun.sleep(100);
yield "world!";
// vous pouvez aussi yield un TypedArray ou Buffer
yield new Uint8Array(["\n".charCodeAt(0)]);
},
{ headers: { "Content-Type": "text/plain" } },
);
},
});Vous pouvez passer n'importe quel itérable asynchrone directement à 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" } },
);
},
});