فراخوانی 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();