回调是个什么鬼?

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('好的,我马上来')
}

进货橘子(你的电话号码)
  1. 你留的电话号码就是回调函数
  2. 这个函数存在的意义就是可以有人关照你
  3. 关照你的行动就是触发还调函数

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(() => {
})
    原文作者:bluesboneW
    原文地址: https://segmentfault.com/a/1190000014024945
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞