تكرار السؤال: …
الإجابة المختصرة
لأن pipeline تدير معالجة الأخطاء وإغلاق وتدمير جميع الـ streams المتصلة تلقائياً في حال حدوث أي خطأ، بينما يترك .pipe() الـ streams معلقة.
الشرح
عند استخدام readable.pipe(writable)، في حال حدوث خطأ في الكتابة، يظل الـ readable مفتوحاً وتظل مقابض الملفات أو مقابس الشبكة معلقة. توفر pipeline إغلاقاً وتدميراً آمناً لجميع الـ streams المشاركة في حالة أي فشل.
مثال بالكود
await pipeline(fs.createReadStream("src"), fs.createWriteStream("dest"));أخطاء شائعة
- استخدام .pipe() بدون الاستماع لأحداث error على كل stream في السلسلة.
أسئلة متابعة
- ما هي الأنواع الأربعة للـ Streams في Node.js وما وظيفة كل منها؟
- ما هي ظاهرة الـ Backpressure في Node.js Streams وكيف تتم معالجتها هندسياً؟