في Bun، يمكن أن تقبل كائنات Response دالة مولد غير متزامنة كجسم لها. هذا يسمح لك بدفق البيانات إلى العميل عند توفرها، بدلاً من انتظار اكتمال الاستجابة بأكملها.
ts
Bun.serve({
port: 3000,
fetch(req) {
return new Response(
// دالة مولد غير متزامنة
async function* () {
yield "مرحبًا، ";
await Bun.sleep(100);
yield "عالم!";
// يمكنك أيضًا إرجاع TypedArray أو Buffer
yield new Uint8Array(["\n".charCodeAt(0)]);
},
{ headers: { "Content-Type": "text/plain" } },
);
},
});يمكنك تمرير أي قابل للتكرار غير متزامن مباشرة إلى Response:
ts
Bun.serve({
port: 3000,
fetch(req) {
return new Response(
{
[Symbol.asyncIterator]: async function* () {
yield "مرحبًا، ";
await Bun.sleep(100);
yield "عالم!";
},
},
{ headers: { "Content-Type": "text/plain" } },
);
},
});