00:00
我们再看下一个,下一个说的是两种类型的回调函数。还记不记得,我们以前应该给回调函数下个定义,什么样的函数是回调函数?还记不记得?有三个条件要同时满足才行。第一点,拟定义函数,你的回调函数你义的,你要知道有的函数不是你定义,比如说像开的是你定义的吗?不是,那我就可以肯定它不是回调函数。对不对,这不是我定义的,第一点是不是就不满足了,第二点回调函数一般我不会调用,我没有亲自调用,能听到吗?但是他最终应该执行了。是不是也就是说你想想看,我又我定义的我又没掉啊,他要不满足三个条件是回调函数吗?你想看定义个函数,你也不掉,别也不掉放在你。就叫回调函数啊,那肯定不是啊,是不是你从执行了,是不是,但由我来执行吗?不是,比如说我们的set,它是不是要传一个什么毁掉函数,那函是我定义的吧,毁掉了吗?我们要听掉对不对,但最终他会不会执行毁对了啊,先要知道毁掉,我们现在不是研究,现在我们要研究的不是什么是回调函数,而是研究我们知道它已经知道它是回调函数了,它又有两种类型,哪两种类型呢?来看一下。
01:31
好,来,我们写几个写几个。呃,写先写一个啊写个什么呢?我们这里面先说一下结果吧,我们有同步调用的回调函数和异步调用的回调函数,哎,这里面就出现了一个大家觉得不太好理解概念,同步和异步的问题,是不是来我先来说一下同步回调函数。啊,下一个呢,就是我们会说一下异步的,先来说一个同步的,我先给大写个例子,好,我先呢去写一个数组,数组内容呢非常简单,比如说135对吧,那我要辨定这个数组可以用数组的什么方法。
02:12
是不是for一级方法就可以变利麦的话,虽然说也能变利,但是不是还有附加的功能,我就用个单纯的变利就可以可以吧?好,那这个时候是不是应该有一个item箭头毁掉函数是不是,那这个函数是不是就是毁掉函数是我定义的吧,我有去掉吗?会,我不会掉吧,但他会不会执行,会他是个便利的回调函数,我称他为便利的回调函数,什么叫便利的回调?每取出一元素是不是调用一次?好,那这个就是大家看到啊,这是一个代码模板,我写个他记得走一下是吧?就可以,好来打一下item吧,好,我在这里写个打印输出,这个是这个打印是不是输出的话,是不是在FOR1之后for,注意啊,FOR1和那个回调函数是两个函数吧,对不对?好,我现在就问他一个问题,你来回答就行,什么问题了,这个上面的和这个谁先执行的问题。
03:24
负一级肯定先执行,负一级执行不代表这个函数执行成两了是吧,是不是能听懂意思,不肯定是这里面所有函数啊,肯定先执行的for一起,当我最后也执行了这个打印输出是不是啊,当然我回调函数是不是他也会执行,但关键是这一个函数,这个函数就是这个打印输出谁先谁后的问题,他先是吧,后面才打印啊,来看一下啊。
04:02
打开一下就行。什么意思?那也就是说,那也就是说我的这个你注意啊,我的这个for each。啊,内部是不是要把这个里面所有的元素都编译,并且调换这个回调函数,是不是后面才结束。那也就是说,如果是这样的形式,我就可以判断出来,判断出来什么呢?这个函数是同步回调函数。能听到不为什么,为什么我是知道他是同步回函数了,因为说白了就是同步函数什么意思,只有把他们都执行完了,这个东西才能结束,是不是能听懂不,我是不是下面这个打印输入最后才执行好,我再写一个,你同步一步的比较,你才能发现他们之间的区别,你看这也是个代模板。
05:13
啊,时间指定为零,这一个是不是time out time out的回掉back执行了可以吧,好来我来写个打印输出,这个我怎么写的,我这个是不是set time out之后执行的。这个能不能看到,可以看到,我把上面的先稍微的小注释一下,别影响我的代码来看到,那现在就要说一个事情呢,谁先对吧?啊,这个时候再来去刷新,你来看一下。是不是先执行了之后的代码,再执行的回调函数?
06:02
尽管我指定的时间是不是零,这个道理应该懂,这个咱讲过是不是,是不是涉及到我们GS的异步编程,它里面的事件循环机制是吧,还能换到回到对应列里面执行的对不对?能听懂不?这一个是异步回调函数,为什么呢?放入队列中将来之行对不对?而这一个呢,我的同步回函数会放到队列吗?不会啊,放到队列的。是不是一上来就要执行完,能不听懂可不,那说现在大家知道了,是所有的回函数都是异步的吗?不是,那有的回函数是什么同步的,有的回函是什么意不得先要知道这个点,再要还一个很重要的问题,你得能判断,你得能告诉别人,别人问你,你怎么判断一个函数,一个回弹是不是异步的?
07:18
啊。怎么判断我是不是可以在这之后写一个打印输出?我这个异步任务启动以后,我是不是可以输在之后写一个打印输出,如果我这个打印输出是在异步任务完成,在那个任务完成之后才执行,那说明他是个同步的任务,对不对?而异步任务是什么意思,是不是他会先执行你启动任务,说白了他开始干这个事情了吗?没有。只是把这个事情给启动了,对不对,就好像说我们发一个异步的加请求,请求确实发出去了,是不是发出一个请求要不了多少时间,对吧,但是服务器处理返回响应这个需要时间吧,是不是那这个时候。
08:11
就有很大的区别,说白了就是这个任务启动之后,你啊是要去等待完成啊,对吧,还是说我先啊把任务启动啊,接着就继续往下执行。是不是等到任务完成以后再调用回调函数,那那个回调函数就是个什么,意义不大。我是不是在这个启动之后,是不是都写了一个打印输出,我这个打印输出是不是有先后的问题。这个先后问题,就能判断它到底是同步的还是什么异的。刚才说了两个问题啊,一个问题啊一个问题,你得先有这个概念,知道毁掉函数有两种。对吧,你这个概念没有,后面你就没法说。没问题吧,啊行,这些都是基本的一些概念。
我来说两句