美文网首页JS学习
JS 回调函数浅析

JS 回调函数浅析

作者: alokka | 来源:发表于2019-04-01 10:14 被阅读0次

回调函数:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。

在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数。如果没有名称(函数表达式),就叫做匿名回调函数。

代码示例:

    function a(callback) {
        callback(1,2)
    }

    a(function (a,b) { // 匿名回调函数
        console.log(a*b) // 2
    })
function fn(callback) {

  setTimeout(function () {
    var data = 'hello'
    callback(data)
  }, 1000)
}

// 如果需要获取一个函数中异步操作的结果,则必须通过回调函数来获取
fn(function (data) {
  console.log(data) // one second later      // hello
})
回调函数.png

回调函数应用场景

  • 资源加载:动态加载js文件后执行回调,加载iframe后执行回调,ajax操作回调,图片加载完成执行回调,AJAX等等。
  • DOM事件及Node.js事件基于回调机制(Node.js回调可能会出现多层回调嵌套的问题)
  • setTimeout的延迟时间为0,这个hack经常被用到,settimeout调用的函数其实就是一个callback的体现
  • 链式调用:链式调用的时候,在赋值器(setter)方法中(或者本身没有返回值的方法中)很容易实现链式调用,而取值器(getter)相对来说不好实现链式调用,因为你需要取值器返回你需要的数据而不是this指针,如果要实现链式方法,可以用回调函数来实现。
  • setTimeout、setInterval的函数调用得到其返回值。由于两个函数都是异步的,即:他们的调用时序和程序的主流程是相对独立的,所以没有办法在主体里面等待它们的返回值,它们被打开的时候程序也不会停下来等待,否则也就失去了setTimeout及setInterval的意义了,所以用return已经没有意义,只能使用callback。callback的意义在于将timer执行的结果通知给代理函数进行及时处理。

相关文章

  • JS 回调函数浅析

    回调函数:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被...

  • JS-回调函数、省份显示

    省份简称与省份全称 js,如何把省份简称转换成省份全称 callback回调函数 JS中回调函数(callback...

  • 07_Node.js Event

    一、回调函数 callback 1、回调函数 Node.js 异步编程的直接体现就是回调,异步编程依托于回调来实现...

  • 浅析js闭包函数和回调函数

    一.闭包函数: 闭包是js中的一大特色,也是一大难点。简单来说,所谓闭包就是说,一个函数能够访问其函数外部作用域中...

  • nodejs笔记2(回调函数和事件循环)

    回调函数 Node.js 异步编程的直接体现就是回调。Node 使用了大量的回调函数,Node 所有 API 都支...

  • 将CallBack改写成Promise

    CallBack回调函数是js的特色之一, 但CallBack回调方法, 非常容易造成回调地狱(callback ...

  • node.js(六)

    Node.js 回调函数Node.js 异步编程的直接体现就是回调。异步编程依托于回调来实现,但不能说使用了回调后...

  • js 回调函数

    js回调函数 就是把一个函数作为另一个函数的参数 在外部函数调用回调函数来完成某个操作下面看段代码function...

  • js回调函数

    传递函数作为回调很容易把一个函数作为参数传递。

  • js回调函数

    回调函数 box1 asdfsdfsdafsdfs // ...

网友评论

    本文标题:JS 回调函数浅析

    本文链接:https://www.haomeiwen.com/subject/ymjmbqtx.html