"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > فهم جافا سكريبت غير المتزامن

فهم جافا سكريبت غير المتزامن

تم النشر بتاريخ 2024-11-07
تصفح:596

Understanding Async JavaScript

JavaScript هي لغة ذات خيط واحد، مما يعني أنها تستطيع القيام بشيء واحد فقط في كل مرة. ومع ذلك، غالبًا ما تحتاج تطبيقات الويب إلى تنفيذ مهام مثل جلب البيانات من الخادم، الأمر الذي قد يستغرق بعض الوقت. إذا كان على JavaScript الانتظار حتى تنتهي كل مهمة قبل المضي قدمًا، فسيؤدي ذلك إلى جعل تطبيق الويب الخاص بك بطيئًا وغير مستجيب. هذا هو المكان الذي يأتي فيه جافا سكريبت غير المتزامن (غير المتزامن).

ما هو جافا سكريبت غير المتزامن؟

يسمح جافا سكريبت غير المتزامن للتعليمات البرمجية الخاصة بك ببدء مهمة ثم الانتقال إلى مهام أخرى أثناء انتظار اكتمال هذه المهمة. بمجرد الانتهاء من المهمة، يمكن أن يعود الكود الخاص بك ويتعامل مع النتيجة. وهذا يساعد على إبقاء تطبيقك سريعًا وسريع الاستجابة.

المفاهيم الأساسية في JavaScript غير المتزامن

  1. متزامن مقابل غير متزامن:

    • متزامن: تنتظر كل مهمة حتى تنتهي المهمة السابقة قبل البدء. على سبيل المثال:
     console.log("Start");
     let result = someFunction(); // This might take a while
     console.log("End");
    

    في التعليمات البرمجية المتزامنة، لن يتم تسجيل رسالة "النهاية" إلا بعد اكتمال someFunction()، مما قد يؤدي إلى إبطاء الأمور.

  • غير متزامن: يمكن أن تبدأ المهام وتنتهي بشكل مستقل، لذلك لا يعلق الكود الخاص بك في الانتظار. على سبيل المثال:

     console.log("Start");
     setTimeout(() => {
         console.log("End");
     }, 2000);
    

    هنا، سيتم تسجيل رسالة "النهاية" بعد ثانيتين، ولكن في هذه الأثناء، يمكن أن يستمر الكود الخاص بك في القيام بأشياء أخرى.

  1. رد الاتصال:

    • رد الاتصال هو دالة تم تمريرها كوسيطة إلى وظيفة أخرى، والتي سيتم تنفيذها بعد اكتمال المهمة.
    • مثال:
     function fetchData(callback) {
         setTimeout(() => {
             let data = "Some data";
             callback(data);
         }, 2000);
     }
    
     fetchData((data) => {
         console.log(data); // This will log "Some data" after 2 seconds
     });
    
  • كانت عمليات الاسترجاعات هي الطريقة الأصلية للتعامل مع المهام غير المتزامنة، ولكنها يمكن أن تصبح معقدة، خاصة إذا كان لديك العديد من المهام لإدارتها (يُعرف هذا باسم "جحيم رد الاتصال").
  1. الوعود:

    • الوعد الوعد هو كائن يمثل الإكمال (أو الفشل) النهائي لمهمة غير متزامنة وقيمتها الناتجة.
    • مثال:
     let promise = new Promise((resolve, reject) => {
         let success = true;
         if (success) {
             resolve("Task completed successfully!");
         } else {
             reject("Task failed!");
         }
     });
    
     promise.then((message) => {
         console.log(message);
     }).catch((error) => {
         console.log(error);
     });
    
  • الحل: إذا اكتملت المهمة بنجاح، فسيتم "حل" الوعد بقيمة.
  • رفض: إذا فشلت المهمة، فسيتم "رفض" الوعد مع ظهور رسالة خطأ.
  • .then(): يعالج القيمة التي يتم إرجاعها إذا تم حل الوعد.
  • .catch(): يعالج الخطأ في حالة رفض الوعد.
  1. غير متزامن/انتظار:

    • async وانتظار هي ميزات JavaScript حديثة تجعل التعامل مع الوعود أسهل وأكثر قابلية للقراءة.
    • غير متزامن: الوظيفة التي تم الإعلان عنها باستخدام غير متزامن ستُرجع دائمًا وعدًا.
    • انتظار: إيقاف تنفيذ وظيفة غير متزامنة مؤقتًا حتى يتم حل الوعد.
    • مثال:
     async function fetchData() {
         try {
             let data = await someAsyncTask();
             console.log(data);
         } catch (error) {
             console.error("Error:", error);
         }
     }
    
  • في هذا المثال، يتم استخدام الكلمة الأساسية انتظار لانتظار اكتمال someAsyncTask قبل الانتقال إلى السطر التالي من التعليمات البرمجية. إذا فشلت المهمة، فسيتم اكتشاف الخطأ ومعالجته في كتلة الالتقاط.

ملخص

  • Async JavaScript يساعد على منع تطبيقك من أن يصبح بطيئًا وغير مستجيب من خلال السماح للتعليمات البرمجية الخاصة بك بمعالجة مهام متعددة في نفس الوقت.
  • عمليات الاسترجاعات هي وظائف يتم تشغيلها بعد اكتمال مهمة غير متزامنة، ولكنها يمكن أن تصبح فوضوية مع المهام المعقدة.
  • توفر الوعود طريقة أنظف للتعامل مع العمليات غير المتزامنة، وتمثل المهام التي سيتم إكمالها في المستقبل.
  • Async/Await هو بناء جملة حديث يجعل التعامل مع الوعود أبسط وأكثر قابلية للقراءة.

يعد فهم جافا سكريبت غير المتزامن أمرًا ضروريًا لبناء تطبيقات ويب سريعة الاستجابة وفعالة، حيث يسمح للتعليمات البرمجية الخاصة بك بأداء المهام دون التعثر في انتظار اكتمال العمليات البطيئة.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/vincod/understanding-async-javascript-2l74?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3