资讯专栏INFORMATION COLUMN

回调是个什么鬼?

DevWiki / 1146人阅读

摘要:什么是回调首先一定要搞清楚回调的英文名什么是回电话假如你现在去一个商店买橘子,结果没有橘子了店员说,现在供货不稳定,不知道啥时候才能有橘子商店进货橘子商店进货橘子然后,你和店员说,这样吧,留个电话号码给你,橘子一到货,你就回个电话给我你的电

1.什么是回调?

首先一定要搞清楚回调的英文名 —— callback
什么是callback?回电话

</>复制代码

  1. 假如你现在去一个商店买橘子,结果没有橘子了
  2. 店员说,现在供货不稳定,不知道啥时候才能有橘子
  3. let 商店
  4. function 进货橘子() {
  5. setTimeout(() => {
  6. 商店.orange = 10
  7. }, Math.random() * 10000)
  8. }
  9. 进货橘子()
  10. 然后,你和店员说,这样吧,留个电话号码给你,橘子一到货,你就回个电话给我
  11. function 你的电话号码() {
  12. console.log(arguments[0])
  13. console.log("好的,我马上来")
  14. }
  15. 店员说,行呀,那我把您的电话号码登记好
  16. function 进货橘子(顾客电话号码) {
  17. setTimeout(() => {
  18. 商店.orange = 10
  19. 顾客电话号码().call(undefined,"橘子到啦,您快来买把")
  20. }, Math.random() * 10000)
  21. }

我们整理一下

</>复制代码

  1. let 商店
  2. function 进货橘子(顾客电话号码) {
  3. setTimeout(() => {
  4. 商店.orange = 10
  5. 顾客电话号码().call(undefined,"橘子到啦,您快来买把")
  6. }, Math.random() * 10000)
  7. }
  8. function 你的电话号码() {
  9. console.log(arguments[0])
  10. console.log("好的,我马上来")
  11. }
  12. 进货橘子(你的电话号码)

你留的电话号码就是回调函数

这个函数存在的意义就是能够有人通知你

通知你的行为就是触发回调函数

2.常见的回调形式 2.1 Node.js 的 error-first 形式

先判断error是否存在,存在则说明出现了错误,不存在则成功

</>复制代码

  1. fs.readFile("./1.txt", (error, content) => {
  2. if (error) {
  3. // 失败
  4. } else {
  5. // 成功
  6. }
  7. })
2.2 jQuery 的 success / error 形式

</>复制代码

  1. $.ajax({
  2. url: "/xxx",
  3. success: () => {
  4. },
  5. error: () => {
  6. }
  7. })
2.3 jQuery 的 done / fail / always 形式

</>复制代码

  1. $.ajax({
  2. url: "/xxx",
  3. }).done(() => {
  4. }).fail(() => {
  5. }).always(() => {
  6. })
2.4 Prosmise 的 then 形式

详情请见浅析Promise
所有异步操作返回一个带有属性then的对象

</>复制代码

  1. $.ajax({
  2. url: "/xxx",
  3. }).then(() => {
  4. }, () => {
  5. }).then(() => {
  6. })

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93766.html

相关文章

  • 方法区到底是个什么

    摘要:那方法区里都存着什么呢先抛结论静态变量常量类信息构造方法接口定义运行时常量池存在方法区中。动态常量池运行时常量池是方法区的一部分,是一块内存区域。文件常量池将在类加载后进入方法区的运行时常量池中存放。 一、方法区与永久代 这两个是非常容易混淆的概念,永久代的对象放在方法区中,就会想当然地认为,方法区就等同于持久代的内存区域。事实上两者是这样的关系: 《Java虚拟机规范》只是规定了有方...

    binaryTree 评论0 收藏0
  • PostCSS 是个什么东西?

    摘要:参考的文章最权威的初认识一个不错的东西理解等插件解析技术大漠的系列文章,应用型很强,推荐一个年龄差不多的开发者的解释一篇稍微理论化解释的文章一个开发模式简单的优劣比较大家也可以直接阅读我的博客 前言 最近大漠前辈在群里发关于PostCSS的系列文章,但是耗子姐姐又说看了有点云里雾里的感觉,所以这篇文章将按一个思考的角度来理解一下 PostCSS 到底是一个什么东西。 showImg(h...

    IamDLY 评论0 收藏0
  • 让 Generator 自启动

    摘要:文章同步自个人博客此前只是简单使用而没有真正的去研究,这次要好好折腾下这货。我们要实现一个启动器来运行它,并把结果传给下一次,这样就实现了接收值的功能。就启动起来了,并且一直执行到为为止。如果执行不了,请升级浏览器,本例在下通过。 文章同步自个人博客:http://www.52cik.com/2016/07/11/generator-co.html 此前只是简单使用而没有真正的去研究 ...

    junbaor 评论0 收藏0
  • 记一次云服务器攻击事件

    摘要:收到报警年月号,正当大家热情的讨论人类首次拍摄的关于黑洞的照片的时候,突然收到了来自阿里云的报警,说是我们的一台服务器正在对外攻击赶紧登陆云控制台,看看到底是怎么回事。收到报警 2019年4月10号,正当大家热情的讨论人类首次拍摄的关于黑洞的照片的时候,突然收到了来自阿里云的报警,说是我们的一台服务器正在对外攻击!赶紧登陆云控制台,看看到底是怎么回事。 十有八九是中招了。。。登陆到服务器上去...

    wwolf 评论0 收藏0
  • 异步!异步!异步!

    摘要:同步和异步先说个傻子的故事有个傻子,第一次用某雷下载大片,就是大人看的片,咳咳咳。。。 1.同步和异步 1.1先说个傻子的故事 有个傻子,第一次用某雷下载大片,就是大人看的片,咳咳咳。。。 某雷告诉他,下载时间要俩小时,傻子心想,要俩小时呐,我第一次用某雷,我得盯着它下载,啥也不能干 于是傻子就干瞪着电脑,等着片下完,这俩小时,傻子啥也没干 后来,傻子变聪明了,他想,反正某雷在帮他下...

    ThinkSNS 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<