JavaScript 回调
回调函数可以被定义为作为参数传递给另一个函数的函数。不要将回调与关键字关联起来,因为回调只是传递给函数的参数的名称。
换句话说,我们可以说传递给另一个函数作为参数的函数被称为回调函数。回调函数在外部函数完成后执行。它用于开发异步JavaScript代码非常有用。
在 JavaScript 中,创建回调更容易。也就是说,我们只需将回调函数作为参数传递给另一个函数,并在任务完成后立即调用它。回调主要用于处理异步操作,如注册事件监听器、从文件中获取或插入某些数据等等。
现在,让我们通过一些示例看如何创建回调。
这是一个异步回调的示例。异步性可以定义为JavaScript必须等待完成操作并在等待期间执行程序的其余部分。
示例1
在这个示例中,有两个函数 getData( x, y, callback) 和 showData() . 在这里,我们调用 getData() 时传递了 showData(); ,也就是说,我们将其作为 getData() 函数的第三个参数传递。结果,将使用指定的参数(包括回调函数)调用 getData() 。
getData() 函数显示两个数字的乘积,并在完成后执行回调函数。在输出中,我们可以看到 getData() 函数的输出之后打印了 showData() 函数的数据。
<html>
<head>
<style>
</style>
</head>
<body>
<h1> Hello World :) :) </h1>
<h3> The getData() function is called its arguments and the callback is executed after the completion of getData() function. </h3>
<script>
function getData(x, y, callback){
document.write(" The multiplication of the numbers " + x + " and " + y + " is: " + (x*y) + "<br><br>" );
callback();
}
function showData(){
document.write(' This is the showData() method execute after the completion of getData() method.');
}
getData(20, 30, showData);
</script>
</body>
</html>
输出
通常在完成异步操作后,回调函数被用于继续执行操作- 这种情况被称为 异步回调 。
现在,在下面的示例中,我们将看到一个立即执行的回调。
示例2
这是另一个使用回调函数的示例。它是一个立即执行的同步回调函数的示例。
这里有两个函数 getData(callback) ,使用提示框从用户那里获取输入,和函数 showData(name, amt) ,使用警告对话框显示用户输入的数据。
<html>
<head>
</head>
<body>
<h1> Hello World :) :) </h1>
<h2> This is the javaTpoint.com </h2>
<script>
function showData(name, amt) {
alert(' Hello ' + name + '\n Your entered amount is ' + amt);
}
function getData(callback) {
var name = prompt(" Welcome to the javaTpoint.com \n What is your name?");
var amt = prompt(" Enter some amount...");
callback(name, amt);
}
getData(showData);
</script>
</body>
</html>
输出
在上述代码执行之后,将显示一个提示框,询问用户的姓名 –
输入姓名后,当用户点击”确定”,将出现另一个提示框,要求输入金额 –
在用户输入金额后点击OK之后,将显示一个警告框。它显示输入的用户名和金额。