JavaScript المتزامنة وغير المتزامنة

تعمل JavaScript على مسار واحد (single thread). وهذا يعني أنها تنفذ شيئاً واحداً في كل مرة. يجب عليك فهم كيفية تعاملها مع المهام لكتابة كود فعال.

Synchronous JavaScript

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

Asynchronous JavaScript

يعمل الكود غير المتزامن بشكل مستقل. لا تحظر المهام الكود الآخر أثناء انتظارها. يُسمى هذا بعدم الحظر (non-blocking). تبدأ المهمة في الخلفية وتُخطرك عند انتهائها.

ثلاث طرق للتعامل مع المهام غير المتزامنة:

  1. Callbacks: دالة تعمل بعد انتهاء المهمة.
  2. Promises: كائن يمثل اكتمال العملية أو فشلها.
  3. Async/Await: الطريقة الأكثر نظافة. تجعل الكود غير المتزامن يبدو مثل الكود المتزامن دون حظر المسار.

العمليات غير المتزامنة الشائعة:

يقوم الـ Event Loop بجعل هذا العمل ممكناً. فهو يستخدم الـ Call Stack، و Web APIs، و Callback Queue لإدارة مهام متعددة في وقت واحد.

Summary:

المصدر: https://www.geeksforgeeks.org/javascript/synchronous-and-asynchronous-in-javascript/ المصدر: https://www.w3schools.com/js/js_asynchronous.asp المصدر: https://medium.com/@mohdtalib.dev/what-is-synchronous-and-asynchronous-in-javascript-07adb7b4cc5f

المنشور الكامل: https://dev.to/raja_b_0c9d242e2c26cf063b/javascript-synchronous-and-asynchronous-2a69