JavaScript Callback(回呼)

Callback Function 回呼函数

A function you give to another function, to be run when the other function is finished

就是有一个函数a,给它一个函数b,当a结束,他呼叫函数b,就是回呼函数b的意思

举个例子:

function greet(greeting){
 var greeting=greeting;
 
 setTimeout(function(){
 console.log(greeting);
 },3000);
}

greet('Hello!');

上面的范例呼叫greet函数後过了三秒才出现'Hello!',这使用到闭包与一级函数的概念。
闭包的概念是因为greet函数已经被执行完,但是里面的greeting变数还在记忆体中,而因为有闭包,所以里面的函数可以取用greeting变数

另外一个例子,大家常用的JQuery也使用到回呼函数概念
例如:

$('body').click(function(){
alert('hello');
})

click是个函数,里面装着另一个匿名函数当click的参数,click执行完则里面函数被呼叫。

用 callback 解决的非同步的问题, 如果有很多 callback 串再一起
就会变成 callback hell,会很复杂,大家可以看看下面结果出来的顺序

function greet1(callback) {
    setTimeout(() => {
        console.log("Done greet1")
        callback()
    }, 2000)
}
function greet2(callback) {
    setTimeout(() => {
        console.log("Done greet2")
        callback()
    }, 1000)
}
function greet3(callback) {
    setTimeout(() => {
        console.log("Done greet3")
        callback()
    }, 2000)
}
function main(callback) {
    greet1(() => {
        greet2(() => {
            greet3(() =>{
            callback()
            })
        })
    })
}
main(() => {
    console.log("All function is done.")
})
//Done greet1
//Done greet2
//Done greet3
//All function is done.

参考资料:
Summer。桑莫。夏天
Callback(回调)
callback, promise, async/await 使用方式教学以及介绍 Part I
重新认识 JavaScript: Day 18 Callback Function 与 IIFE


<<:  卡夫卡的藏书阁【Book23】- Kafka - KafkaJS 监控状态事件

>>:  Day22 - Sort2

[Re:PixiJS - Day42] dat.gui 小技巧 .name() / .listen() / .remember(obj)

先前有介绍过 dat.GUI,这篇补充一些先前没提过的部分: [PixiJS - Day-16] 使...

App 里的广告运用的格式跟广告商,不同平台的收益差别

今天分享我们 App 里的广告运用的情况 广告格式 目前我们用的广告格式有 banner 横幅广告 ...

Day 11 CSS <三大特性>

CSS中语法有着三大特性 分别为: 层叠性、继承性、优先性 1. 层叠性 若是设置给相同选择器相同的...

day9 : logging集中(下)

昨天完成k8s log的来源设定,但是查找log如果都要到vector查说实在有点麻烦,因此今天就来...

Proxmox VE 帐号管理及权限指派

Proxmox VE 平台功能丰富,随着建立的客体机服务越来越多,组织成长後势必需要进行分工管理,...