Async/Await چیست و چه تفاوتی با Promise دارد؟






Async/Await چیست و چه تفاوتی با Promise دارد؟

Async/Await چیست و چه تفاوتی با Promise دارد؟

مقدمه

در برنامه‌نویسی وب، Async/Await و Promise دو روش برای مدیریت عملیات ناهمگام (Asynchronous) است که توسط JavaScript ارائه شده‌اند. در این مقاله به توضیح Async/Await و تفاوت‌های آن با Promise می‌پردازیم.

Promise چیست؟

Promise یک الگوی طراحی برای مدیریت عملیات ناهمگام در JavaScript است. این الگو اجازه می‌دهد تا توابع ناهمگام را به صورت ساده و قابل فهمی اجرا کنید و از تعداد زیادی callback ها برای انجام کارها جلوگیری کنید.

Async/Await چیست؟

Async/Await یک قابلیت جدید در ECMAScript 2017 است که برای نوشتن کد همزمان (concurrent) استفاده می‌شود. این قابلیت بر روی Promise ها ایجاد شده و امکان نوشتن کد ناهمگام به صورت همانند کد همگام را فراهم می‌کند.

تفاوت‌ها بین Async/Await و Promise

  • نوشتن کد با Async/Await بسیار ساده‌تر و قابل فهم‌تر است نسبت به Promise.
  • استفاده از try/catch برای مدیریت خطاها در Async/Await آسان‌تر است.
  • کد نوشته شده با Async/Await معمولاً کمتر و پویا تر است.

مثال کدی

در ادامه یک مثال ساده از Async/Await و Promise را مشاهده می‌کنید:


        // Promise
        function fetchData() {
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve('Data fetched successfully!');
                }, 2000);
            });
        }

        fetchData().then(response => {
            console.log(response);
        });

        // Async/Await
        async function fetchDataAsync() {
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve('Data fetched successfully!');
                }, 2000);
            });
        }

        async function getData() {
            const response = await fetchDataAsync();
            console.log(response);
        }

        getData();
    

نتیجه گیری

در نهایت، Async/Await و Promise هر دو روش‌های قدرتمندی برای مدیریت عملیات ناهمگام در JavaScript هستند. انتخاب بین این دو بستگی به نوع پروژه و تیم توسعه دهنده دارد.