بازگشت به درس

فراخوانی async از non-async

ما یک تابع معمولی داریم که f نامگذاری شده است. چگونه می توانید تابع ()wait که async است را فراخوانی کنید و از نتیجه آن داخل f استفاده کنید؟

async function wait() {
  await new Promise(resolve => setTimeout(resolve, 1000));

  return 10;
}

function f() {
  // ... چی باید اینچا بنویسیم?
  // ما باید async wait() را فراخوانی کنیم و صبر کنیم تا ۱۰ را بگیریم
  // به یاد داشته باشید، نمی توانیم از "await" استفاده کنیم
}

ضمیمه: این کار از نظر فنی بسیار ساده است اما این سوال برای توسعه دهندگان که با async/await تازه آشنا شده اند بسیار متداول است.

این مورد زمانی است که دانستن نحوه عملکرد آن در داخل تابع عادی مفید است.

فقط کافیست که با async مانند Promise عمل کنیم و then. را به آن اضافه کنیم:

async function wait() {
  await new Promise(resolve => setTimeout(resolve, 1000));

  return 10;
}

function f() {
  // بعد از ۱ ثانیه ۱۰ را نشان می دهند‍‍
  wait().then(result => alert(result));
}

f();