Skip to content

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" } },
    );
  },
});

Bun édité par www.bunjs.com.cn