بازگشت به JavaScript

"I will call back later!"

فراخوانی (callback) به عنوان تابعی که به عنوان پارامتر به یک تابع دیگر منتقل می‌شود، است

این تکنیک اجازه می‌دهد تا یک تابع دیگر را فراخوانی کند

توابع فراخوانی می‌توانند پس از اتمام یک تابع دیگر اجرا شوند

ترتیب توابع

توابع جاوااسکریپت بر اساس ترتیبی که فراخوانی می‌شوند، اجرا می‌شوند. نه بر اساس ترتیبی که تعریف شده‌اند.

این مثال در نهایت "Goodbye" را نمایش می‌دهد:

مثال

function myFirst() {
  myDisplayer("Hello");
}
function mySecond() {
  myDisplayer("Goodbye");
}
myFirst();
mySecond();

آموزش کنید

این مثال در نهایت "Hello" را نمایش می‌دهد:

مثال

function myFirst() {
  myDisplayer("Hello");
}
function mySecond() {
  myDisplayer("Goodbye");
}
mySecond();
myFirst();

آموزش کنید

کنترل ترتیب

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

فرض کنید که می‌خواهید محاسبه کنید و نتایج را نمایش دهید.

می‌توانید تابع محاسباتی را فراخوانی کنید (myCalculator)، نتایج را ذخیره کنید و سپس تابع دیگری را فراخوانی کنید (myDisplayer) تا نتایج را نمایش دهید:

مثال

function myDisplayer(some) {
  document.getElementById("demo").innerHTML = some;
}
function myCalculator(num1, num2) {
  let sum = num1 + num2;
  return sum;
}
let result = myCalculator(5, 5);
myDisplayer(result);

آموزش کنید

یا می‌توانید تابع محاسباتی را فراخوانی کنید (myCalculator)، و اجازه دهید که تابع محاسباتی تابع نمایشگر را فراخوانی کند (myDisplayer) :

مثال

function myDisplayer(some) {
  document.getElementById("demo").innerHTML = some;
}
function myCalculator(num1, num2) {
  let sum = num1 + num2;
  myDisplayer(sum);
}
myCalculator(5, 5);

آموزش کنید

مشکل اولین مثال این است که باید دو تابع را فراخوانی کنید تا نتایج را نمایش دهید.

مشکل مثال دوم این است که نمی‌توانید جلوگیری کنید تا تابع محاسباتی نتایج را نمایش دهد.

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

بازگشت به JavaScript

فراخوانی به عنوان تابعی که به عنوان پارامتر به یک تابع دیگر منتقل می‌شود، است.

با استفاده از فراخوانی، می‌توانید تابع محاسباتی را با فراخوانی فراخوانی کنید (myCalculator)، و بعد اتمام محاسبات، فراخوانی تابع محاسباتی را اجرا کنید:

مثال

function myDisplayer(some) {
  document.getElementById("demo").innerHTML = some;
}
function myCalculator(num1, num2, myCallback) {
  let sum = num1 + num2;
  myCallback(sum);
}
myCalculator(5, 5, myDisplayer);

آموزش کنید

در مثال بالا، myDisplayer نام تابع است.

به عنوان پارامتر ارسال می‌شود به myCalculator().

هنگامی که توابع را به عنوان پارامتر ارسال می‌کنید، به یاد داشته باشید که از کروشه استفاده نکنید.

درست: myCalculator(5, 5, myDisplayer);

اشتباه: myCalculator(5, 5, myDisplayer());

چه زمانی باید از تابع‌های بازگشتی استفاده کرد؟

مثال‌های بالا چندان هیجان‌انگیز نیستند.

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

نقاط قوت واقعی تابع‌های بازگشتی در توابع همزمان است، جایی که یک تابع باید منتظر تابع دیگری باشد (مثلاً منتظر بارگذاری یک فایل).

صفحه بعدی معرفی خواهد شد که چگونه از توابع همزمان استفاده می‌شود.