美文网首页
关callback的使用和认识

关callback的使用和认识

作者: 路人甲_5ed9 | 来源:发表于2018-09-28 22:45 被阅读0次

关于js中的回调函数callback

前言

其实我一直很困惑关于js 中的callback,困惑的原因是,学习中这块看的资料少,但是平时又经常见,偶尔复制一下前人代码,功能实现了也就不再去追其原由,这么着,这个callback的概念就越来越混乱,因为你总感觉它是你Ajax请求后调用的那个函数,又感觉它是你某一个函数中的形参而已,而当你有一天看到一点关于Node.js的代码后你会更加崩溃,因为你会发现很多的callback,但是这么着下去肯定是不行的,因为很多的东西如果只是知道概念和理论,没有实践出结果,没有思考和感受,这些东西永远不是你的,所以任何关于技术上用到的东西都应该去花时间钻研一下,学习 付出时间 实践都会搞明白的,还会沉淀很多思想,所以最近一直在浏览相关的文章和资料,自己在项目中也用到了一些去实践,这样一轮下来后,你会发现明亮了很多

一 .搞清楚异步和同步

异步async/同步sync

举个小栗子

1.早上起来不论你是先刷牙还是先洗脸,都要等一个事情完毕后才能进行下一项,这就是一个同步的例子

2.然后刷牙的时候你也可以烧水喝 (不用等你刷完牙)这就是一个异步的例子

来段异步代码示例

js里面最基础的异步实现

运行结果

以上代码会先执行函数a,而且不会等到a中的延迟函数执行完才执行函数b, 在延迟函数被触发的过程中就执行了函数b,当js引擎的event 队列空闲时才会去执行队列里等待的setTimeout的回调函数,这就是一个异步的例子

题外话:

调用 setTimeout 函数会在一个时间段过去后在队列中添加一个消息。这个时间段作为函数的第二个参数被传入。如果队列中没有其它消息,消息会被马上处理。但是,如果有其它消息,setTimeout 消息必须等待其它消息处理完。因此第二个参数仅仅表示最少的时间 而非确切的时间

所以即使,时间设置为0,也是会照样先执行函数b

来段同步代码示例

结果输出1

print函数会等change函数完成之后去执行,所以结构输出为1,因为change函数修改了全局变量a的值,change执行之后才执行的print函数

二.回调函数到底是什么

A callback is a function that is passed as an argument to another function and is ex

相关文章

网友评论

      本文标题:关callback的使用和认识

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