Asyncغير المتزامن
ما هو Async؟
تبدأ العمل البطيء، ثم تكمل غيره، وتعود إلى النتيجة حين تجهز.
ما معنى Async بالعربي؟
الاسم المعتمد الآن هو «غير المتزامن». ولأن كثيرًا من المصطلحات لم يستقرّ لها اسم عربي واحد، يكتب هذا القاموس قرّاؤه: صوّت للاسم الذي تراه أوضح، أو اقترح اسمًا أفضل. نراجع الأصوات في كل جولة ونعتمد ما يختاره الناس.
-
غير المتزامن الاسم المعتمد اسم القاموس
-
اللاتزامني صيغة ترد في المراجع العربية
-
أسينك تعريب صوتي شائع بين المطورين
صوت واحد لكل قارئ في كل مصطلح، وتستطيع نقله إلى اسم آخر. حين يتجاوز اسمٌ الاسمَ المعتمد ويصل إلى 5 أصوات على الأقل، نعرضه للاعتماد في الجولة التالية.
اقترح اسمًا عربيًا أفضل
هل الشرح غير واضح أو فيه خطأ؟
تجلس إلى طاولة في مطعم، فيأتي النادل ويسجّل طلبك ويمضي إلى المطبخ. ثم لا يقف عند بابه ينتظر طبقك. يلتفت إلى الطاولة المجاورة، يسجّل طلبها، يحمل صينية إلى طاولة ثالثة، ويعود إليك حين ينادي المطبخ أن الطبق جاهز. وأنت في الأثناء تتصفّح هاتفك وتتحدّث مع رفيقك. لا أحد متجمّد في مكانه.
هذا هو «غير المتزامن» (Asynchronous): ابدأ الشيء البطيء، ثم تابع غيره، وتعامل مع النتيجة حين تصل. والعكس له اسم أيضًا: «متزامن» (Synchronous)، أي أن يقف النادل أمام المطبخ لا يتحرّك حتى يخرج طبقك. مقبول حين يستغرق الطهي ثواني؛ كارثة حين يطول.
ولماذا يهتمّ الحاسوب بهذا؟ لأن البرامج تقضي وقتها في انتظار أشياء بطيئة لا تملكها: جلب بيانات من قاعدة البيانات، استدعاء API لشركة أخرى، إرسال بريد، رفع صورة، خصم مبلغ من بطاقة. كل واحدة قد تستغرق جزءًا من ثانية أو عدّة ثوانٍ. والسؤال الوحيد: أثناء الانتظار، هل يتجمّد التطبيق أم يواصل الحركة؟
لقد شعرت بالفرق من قبل. تضغط «ادفع» في صفحة الشراء. الصفحة السيئة تتجمّد: الزرّ يصبح رماديًّا، لا شيء يستجيب، وتجلس تتساءل هل خُصم المبلغ. هذه صفحة متزامنة. أما الصفحة الجيدة فتبقى حيّة: تعرض «جارٍ المعالجة» وتظلّ تتحرّك وتستجيب. هذه صفحة غير متزامنة. العمل تحت السطح واحد؛ الفرق هل وقف التطبيق في مكانه أم مضى في يومه.
وكلمة واحدة ستراها في الكود أو تسمعها من المطوّر: await، أي «انتظر». حين يجب على البرنامج أن ينتظر شيئًا واحدًا بعينه، هذه هي الطريقة لينتظره قصدًا من غير أن يوقف بقية البيت. ومن هنا أكثر الأخطاء شيوعًا في هذا الباب: أن يطلب الكود البيانات، ثم يحاول استخدامها في السطر التالي مباشرة قبل أن تصل، فيعمل على لا شيء ويتعطّل. والإصلاح كثيرًا ما يكون كلمة واحدة: انتظر الطلب قبل أن تلمس نتيجته.
الجملة التي تبقى معك: المتزامن ينتظر، وغير المتزامن يمضي ويعود عند الجرس. الشيء البطيء لم يصر أسرع؛ التطبيق فقط كفّ عن الوقوف في انتظاره.
لماذا يهمك Async؟
حين يقول لك المطوّر «سأجعل هذا غير متزامن حتى لا تتجمّد الصفحة»، ستعرف أنه يحمي عملاءك من زرّ رماديّ وشاشة ميتة. وحين تعود نتائج فارغة من أداة بناها وكيل، ستخطر لك فرضية صحيحة: ربما استُخدمت البيانات قبل وصولها.
متى ستسمع كلمة Async؟
يقول لك المطوّر: «الرفع يعمل في الخلفية بشكل غير متزامن، فلن ينتظر المستخدم اكتماله».
