什么是返回回调和仅调用回调之间的区别

什么是返回回调和仅调用回调之间的区别

在编程中,回调函数是作为另一个函数的参数传递的函数,当需求完成某个特定任务时,通过执行回调函数来实现。回调函数提供了各种强大的编程技术。回调函数通过允许通过回调执行所需的动作,使函数的执行更加动态。

回调函数有两种类型:同步回调(阻塞回调)和异步回调(延迟回调)。

  • 同步回调: 也称为阻塞回调函数。它们与其名称暗示的一样是同步性质的,即它们遵循同步程序执行的方式,这意味着每行代码的执行都是在前一行完成执行并且立即执行。因此,在函数完成执行之前,同步回调会被调用。例如,C和C++。
  • 异步回调: 也称为延迟回调函数。它们可能在函数完成执行后被调用。它们用于处理I/O操作和基于事件的程序执行。例如,向服务器发送HTTP请求并等待响应。在这种情况下,由于网络流量较大,响应可能会延迟到达,因此是异步的。现在假设我们希望在接收到响应后执行一个函数,那么我们将一个回调函数传递给发送请求的函数,这样在接收到响应后它就会自动执行,因此它是异步的,因为接收响应需要一些时间,而执行不是立即的。像JavaScriptPython、Lua这样的动态语言允许直接将回调函数作为对象传递。

现在我们知道了回调函数及其类型,让我们来看一下返回回调和仅调用回调之间的区别。

返回回调: 在返回回调中,被调用的函数返回一个回调而不是立即执行它。调用代码在回调被返回的地方可以立即执行返回的回调,将其传递给其他函数等等。让我们看一个返回回调函数的函数的示例。

const returnCallbackFunction = () => {
    let i = 10;
    return () => console.log(
        'This is a callback function.\nValue of i is', i
    );
}
 
// A callback function is returned by 
// the returnCallbackFunction()
let callbackFunction = returnCallbackFunction();
 
// CallbackFunction is executed
callbackFunction();
JavaScript

输出:

This is a callback function.
Value of i is 10
JavaScript

调用回调函数: 与返回回调函数不同,调用回调函数只是立即执行回调函数。让我们看一个调用回调函数的示例。

// Defining a callback function
const callbackFunction = () => {
    console.log('Calling a callback function');
}
 
// Calling the callback function
callbackFunction();
JavaScript

输出:

Calling a callback function
JavaScript

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册