جسٹاگرافک ریلیو

"I will call back later!"

回调 (callback) 是作为参数传递给另一个函数的函数

这种技术允许函数调用另一个函数

回调函数可以在另一个函数完成后运行

函数序列

JavaScript 函数按照它们被调用的顺序执行。而不是以它们被定义的顺序。

此例最终将显示 "Goodbye":

مثال

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

میرا تجربہ کریئر

本例子最终会显示 "Hello":

مثال

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

میرا تجربہ کریئر

顺序控制

有时您希望更好地控制何时执行函数。

假设您要进行计算,然后显示结果。

您可以调用计算器函数 (myCalculator),保存结果,然后调用另一个函数 (درج بالا مثال میں،) 来显示结果:

مثال

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),并让计算器函数调用显示函数 (درج بالا مثال میں،):

مثال

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

میرا تجربہ کریئر

上面第一个例子的问题是你必须调用两个函数来显示结果。

第二个例子的问题是您无法阻止计算器函数显示结果。

现在是引入回调的时候了。

جسٹاگرافک ریلیو

回调是作为参数传递给另一个函数的函数。

使用回调,您可以通过回调调用计算器函数(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());

کالبیک کا استعمال کیوں کیا جاتا ہے؟

مثال کافی توجہ جلنے والا نہیں ہے。

انہیں سادہ کیا گیا ہے تاکہ آپ کو کالبیک کی زبان کی تعلیم دی جائے۔

کالبیک کا صحیح استعمال، ایسینک فنکشن میں ایک فنکشن دوسرے فنکشن کو منتظر رکھنا ہوتا ہے (مثلاً فائل لوڈ کی انتظار)

آئندہ باب میں ایسینک فنکشن کو معرف کیا جائے گا。