تعد البرمجة غير المتزامنة إحدى نقاط القوة الرئيسية لجافا سكريبت، خاصة في Node.js؛ ومع ذلك، نظرًا للفصل الضروري بين الاهتمامات، غالبًا ما يتم تنفيذ عمليات متعددة غير متزامنة عبر عمليات الاسترجاعات، ويمكن أن يؤدي هذا إلى ما يُعرف باسم "جحيم رد الاتصال". على سبيل المثال، فكر في موقف نعمل فيه مع عمليات رد اتصال متداخلة في كود JavaScript الخاص بنا، ودعنا ننظر في كيفية إعادة هيكلتها باستخدام الوعود والبنية غير المتزامنة/الانتظار.
لنبدأ ببعض التعليمات البرمجية التي تستخدم عمليات الاسترجاعات للتعامل مع عمليات الملفات لنظام إدارة منتج بسيط:
لدينا هنا العديد من الاستدعاءات الخلفية المتداخلة جيدًا للقراءة منها والكتابة إلى ملف. ربما تكون هذه إحدى الحالات التي قد تكتبها عندما تكون متعمقًا في جحيم رد الاتصال. أخيرًا، مع وجود عدد أكبر من العمليات غير المتزامنة، سينمو الكود وكذلك مقدار المسافة البادئة مما يجعل قراءته أكثر صعوبة. في طريقة save()، تقوم الدالة fs.readFile بقراءة الملف، ثم يقوم رد الاتصال الخاص بها بتحليل المحتوى ويستخدم الدالة fs.writeFile لإعادة كتابة محتوى الملف الذي يتم إجراؤه في رد اتصال آخر. مثل هذه المستويات من التداخل تجعل الكود يشبه ما يشار إليه باسم "هرم الموت".
من أجل تجنب جحيم رد الاتصال هذا، هناك وعود JavaScript وصيغة غير متزامنة/انتظار مما يجعل التعليمات البرمجية أكثر قابلية للقراءة والإدارة وتصحيح الأخطاء.
إليك النسخة المحسنة:
تعد الوعود مفيدة من خلال تمكين إدارة العمليات غير المتزامنة خطيًا وبأقل عدد من الهياكل المتداخلة. يعمل نمط غير المتزامن/الانتظار على تحسين إمكانية قراءة التعليمات البرمجية ويعالج أيضًا العمليات غير المتزامنة بطريقة تبدو أقرب إلى العمليات المتزامنة. باستخدام كتل المحاولة والالتقاط على وجه التحديد، تصبح معالجة الأخطاء أكثر شفافية وأسهل للفهم مما يساهم في إمكانية صيانة التعليمات البرمجية.
يمكن أن يكون رد الاتصال هو المشكلة الحقيقية أثناء كتابة التعليمات البرمجية بطريقة عمل نظيفة في JavaScript، وخاصة في Node.js. بمساعدة Promises وasync/await، من الممكن تحويل جحيم رد الاتصال المتداخل بشدة إلى كود خطي نظيف في نفس الوقت مما يسهل التعامل مع الأخطاء. فهو لا يحول التعليمات البرمجية الخاصة بك لتبدو أفضل بكثير فحسب، بل يضعك أيضًا على المسار الصحيح لتصبح مبرمجًا أفضل لجافا سكريبت.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3