مفهوم Asynchronous JavaScript: الفرق بين Callback و Promise و Async/Await
واحدة من أكثر الكلمات بحثًا على Google هي: "What is asynchronous JavaScript" لأن المبرمج المبتدئ دائمًا يخلط بين العمليات المتزامنة وغير المتزامنة. في هذا المقال تفهم الموضوع بشكل بسيط مع أمثلة جاهزة.
ما هو Asynchronous JavaScript؟
هو أسلوب يسمح لبرنامجك بتنفيذ عدة مهام دون الانتظار.
مثل:
جلب بيانات من API
تحميل صور
قراءة ملفات
العمليات البطيئة بشكل عام
بدون هذا الأسلوب، سيصبح الموقع بطيئًا جدًا.
1) Callback
هو تمرير دالة حتى تُنفذ بعد انتهاء عملية معينة.
function getUser(callback) {
setTimeout(() => {
callback("Osama");
}, 2000);
}
getUser((name) => {
console.log(name);
});
عيبه: Callback Hell (تشابك الدوال داخل بعض بشكل مزعج).
2) Promise
بديل حديث للـ Callback:
let promise = new Promise((resolve, reject) => {
resolve("Data loaded");
});
promise.then((result) => console.log(result));
3) Async / Await
الأسلوب الأبسط والأكثر استخدامًا:
async function fetchData() {
const response = await fetch("https://api.example.com/data");
const data = await response.json();
console.log(data);
}
fetchData();
خلاصة
تعامل JavaScript مع المهام غير المتزامنة هو أساس أي تطبيق حديث:
Callback: قديم
Promise: أفضل
Async/Await: الأنسب والأبسط