الـ Callback دالة نمررها إلى دالة أخرى، لتُنفَّذ بعد أن تنتهي من عملها:
function fetchData(callback) {
setTimeout(() => {
console.log("Data fetched");
callback(); // run it after the data is ready
}, 2000);
}
function onDataFetched() {
console.log("Callback executed");
}
fetchData(onDataFetched);
بعد ثانيتين يظهر Data fetched ثم Callback executed.
أين تراها؟
button.addEventListener('click', () => { ... });
[1, 2, 3].map(n => n * 2);
المشكلة
عندما تتداخل عمليات كثيرة، تتداخل الـ callbacks داخل بعضها ويصعب قراءة الكود (Callback Hell). لهذا ظهرت Promises وasync/await.