javascript - 'callbacks' 只是一个命名约定吗?

标签 javascript callback

我读到回调是在其余逻辑完成后触发的函数,如下所示:

function withCallback(argument, callback) {
  doSomethingWithParams(argument);
  callback():
}

但据我所知,这些回调都需要声明,没有通用的方法可以每次将回调放在您想要的地方?我想我的问题是:回调在技术上是特殊的,还是只是在另一个函数末尾声明和执行的函数的常规名称?

最佳答案

回调没有什么特别的;它们只是函数(在 JavaScript 中)。术语“回调”用于指示调用者提供的函数在某个适当的时间被回调,该时间由接受回调的对象定义。即使如此,我们也不总是使用术语“回调”。例如,事件处理程序是回调,但我们很少这样调用它们。

...as far as i can tell these callbacks need to be declared all the same...

一点也不。 XMLHttpRequestonreadystatechange 回调不接收任何参数,但 Array#sort 回调接收两个参数,而 Array#forEach 接收三个(尽管人们通常只使用其中一两个)。他们都是不同的。并非所有回调都必须内联定义,而且通常情况下并非如此。因此它们的声明方式并不相同。

据我所知,回调有三种常见的“标准”形式:

  1. DOM 事件处理程序:调用时,它们接收一个事件对象作为第一个参数,在正常情况下,this 将设置为注册处理程序的元素。它的返回值在标准形式 (addEventListener) 中被忽略,但被其他人用于某些用途(请参阅我的帖子: The true story of return false )。

  2. Promise 回调有两种形式:

    1. promise执行器,这是您传递new Promise的函数,它接收两个参数:用于解析项目的函数和函数用于拒绝它。

    2. thencatch 回调,它接收(在标准实现中)一个参数,该参数是发生的解析值或错误。回调的返回值确定通过调用 thencatch 创建的 Promise,并且从它们中的任何一个抛出错误都会拒绝该 Promise。

      <
  3. Node.js 风格的 API 回调:这些回调接收错误或 null 作为其第一个参数,如果 null 则后跟零个或多个非错误值作为第一个参数传递。

可能还有其他。

关于javascript - 'callbacks' 只是一个命名约定吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50962494/

相关文章:

javascript - 有没有一种方法可以编写 JavaScript,使其在处理许多回调时更具可读性?

javascript - 通过 AJAX 更新 Pickadate 输入

javascript - 从自定义打印按钮触发数据表打印

javascript - 在控制台中打印但请求成功时,Angular $http 响应返回 null

javascript - 使用参数响应 useCallback

php - 我可以测试回调是否有效吗?

C++ 回调函数

ruby-on-rails - 如何删除供应商代码插入的回调?

具有多维数组的 Javascript 对象

javascript - 有什么方法可以进行同步 PageMethods 调用?