1.什么是回调?
起首一定要搞清楚回调的英文名 —— callback
什么是callback?回电话
如果你如今去一个市肆买橘子,效果没有橘子了
伙计说,如今供货不稳定,不知道啥时候才有橘子
let 市肆
function 进货橘子() {
setTimeout(() => {
市肆.orange = 10
}, Math.random() * 10000)
}
进货橘子()
然后,你和伙计说,如许吧,留个电话号码给你,橘子一到货,你就回个电话给我
function 你的电话号码() {
console.log(arguments[0])
console.log('好的,我马上来')
}
伙计说,行呀,那我把您的电话号码登记好
function 进货橘子(主顾电话号码) {
setTimeout(() => {
市肆.orange = 10
主顾电话号码().call(undefined,'橘子到啦,您快来买把')
}, Math.random() * 10000)
}
我们整顿一下
let 市肆
function 进货橘子(主顾电话号码) {
setTimeout(() => {
市肆.orange = 10
主顾电话号码().call(undefined,'橘子到啦,您快来买把')
}, Math.random() * 10000)
}
function 你的电话号码() {
console.log(arguments[0])
console.log('好的,我马上来')
}
进货橘子(你的电话号码)
- 你留的电话号码就是
回调函数
- 这个函数存在的意义就是可以有人
关照你
- 关照你的行动就是
触发还调函数
2.罕见的回调情势
2.1 Node.js 的 error-first 情势
先推断error是不是存在,存在则申明涌现了毛病,不存在则胜利
fs.readFile('./1.txt', (error, content) => {
if (error) {
// 失利
} else {
// 胜利
}
})
2.2 jQuery 的 success / error 情势
$.ajax({
url: '/xxx',
success: () => {
},
error: () => {
}
})
2.3 jQuery 的 done / fail / always 情势
$.ajax({
url: '/xxx',
}).done(() => {
}).fail(() => {
}).always(() => {
})
2.4 Prosmise 的 then 情势
概况请见浅析Promise一切异步操纵返回一个带有属性then的对象
$.ajax({
url: '/xxx',
}).then(() => {
}, () => {
}).then(() => {
})