تكرار السؤال: …
الإجابة المختصرة
توفر واجهة برمجية موحدة لاستهلاك البيانات المتدفقة عنصراً بعنصر أو دفعة بدفعة مع تطبيق الـ backpressure التلقائي وإيقاف الجلب حتى ينتهي استهلاك العنصر.
الشرح
الكائنات التي تطبق Symbol.asyncIterator تسمح بالتكرار عليها عبر for await...of. في Node.js، تطبق الـ Streams واجهة الـ Async Iterator بشكل أصيل، مما يتيح قراءة البيانات من ملف أو استعلام قاعدة بيانات متدفق بطريقة سهلة مع ضمان إغلاق المورد تلقائياً عند كسر الحلقة.
مثال بالكود
for await (const chunk of stream) {
await handleChunk(chunk);
}أخطاء شائعة
- عدم التعامل مع أخطاء الـ stream داخل حلقة for await مما يسبب unhandled rejection.