Asynchronous JavaScript

در جاوااسکریپت، Asynchronous به معنی اجرای کدها به صورت غیرهمزمان است، یعنی برخی عملیات می‌تونن بعد از مدتی اجرا بشن بدون اینکه اجرای بقیه کد متوقف بشه.
این موضوع برای کار با شبکه، فایل‌ها، یا عملیات زمان‌بر بسیار مهمه.

🔹 روش‌های اجرای Asynchronous

1. Callbacks

تابعی که به عنوان آرگومان به تابع دیگری داده می‌شود و بعد از اتمام عملیات اجرا می‌شود.

function greet(name) { console.log("Hello " + name); } setTimeout(() => greet("Ali"), 2000);

📌 خروجی بعد از 2 ثانیه:

Hello Ali

2. Promises

یک Promise نشان‌دهنده نتیجه آینده یک عملیات است:

let promise = new Promise((resolve, reject) => { let success = true; if(success) { resolve("Operation succeeded"); } else { reject("Operation failed"); } }); promise.then(result => console.log(result)) .catch(error => console.log(error));

📌 خروجی:

Operation succeeded

3. Async / Await

راهی ساده برای نوشتن کدهای غیرهمزمان به صورت همزمان به نظر برسد.

function wait(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function greet() { console.log("Start"); await wait(2000); console.log("Hello after 2 seconds"); } greet();

📌 خروجی بعد از 2 ثانیه:

Start Hello after 2 seconds

🔹 Event Loop

  • جاوااسکریپت تک‌نخی (Single-threaded) هست، اما با Event Loop می‌تونه کارهای غیرهمزمان رو مدیریت کنه.

  • Callbackها و Promiseها در Queue قرار می‌گیرن و بعد از اتمام کدهای همزمان اجرا می‌شن.

✅ خلاصه

  • Asynchronous JavaScript اجازه می‌ده عملیات زمان‌بر بدون مسدود کردن کدهای دیگر اجرا بشن.

  • سه روش اصلی: Callbacks, Promises, Async/Await.

  • Event Loop مسئول مدیریت صف عملیات غیرهمزمان است.