00:04
好了。好,接下来啊,咱们来看一个这个啊,啊面试中啊,这个比较常见的一个问题啊,也就是说我们现在来分析一下咱们这个阿贾克斯另一大特性,也就同步和异步操作的问题,OK吧,好。这个同步和异步操作呀,我们还得给他加一个。这个属性和属性值,这叫什么来着,呃。是这个吧,对不对,它默认是什么呢。默认是处,处是什么?默认情况他肯定走的是什么异步,这个是必须的,对不对?好,那么默认是处啊,那如果改成false呢,它就是。同步OK吧,这个同步和异步之间的这个差别啊,我们来观察它一下啊。
01:06
咱们先来观察,再总结一下啊,因为在这个面试的过程当中啊,这个东西啊,总会总会提起啊,这个异步的这个问题。在这里边咱们睡会儿觉吧,这东西咱们不睡觉是不是看不出来呀。嗯,看看啊行老师先来演示一下不睡觉的啊,这个其实你要不睡的话,你看不出来啊来。因为对于我们现在这个后台来讲的话,其实就是一瞬间发生的事儿,对不对?好,我睡会儿觉可以模拟它什么呢?比如说他连了一下数据库,做了一些业务,逻辑是这样吧,总之后台是花稍微花点时间的,OK吧,好,我们现在啊,在我们最原始的这个条件下,先来观察一下啊,注意看了我现在这个ASIC啊,给它设置成一个true。
02:02
这里边儿咱们先来看啊,做一个。点击。哎,跟刚才这个貌似这个。没啥区别啊。是吧,行,我再给它改成什么呢?False。这这肯定是看不出来的,为什么?因后台走的太快了,看后台啊基本上是什么,这一行执行其实是不耗时间的,就在控台上输出一句话,OK吧,我现在假设在后台啊,又连数据库又处理了很复杂的业务逻辑,OK吧,那处理数据库的过程呢,咱们可能做了很复杂的查询,OK吧,好,我们现在啊,模拟一下,模拟一下好来一个T。H re或thread对吧,好点。Sleep。
03:00
比如说睡个三秒钟啊啊。来个车开始啊。行,这回啊,咱们还是改成。错啊。诶,其实啊,这个后台啊,尤其是so改完之后啊,在很多高级这个ID里面都不用重启他们看一下,但是呢啊,每一款ID啊,它出现的问题都不一样啊,不论是eclips还是不同版本的这个idea,其实eclips这个版本就更多了,OK吧,所以说给大家一个要求是什么呢?啊,有些情况下改后台是不用重启服务器的,但是还是要求大家必须重启服务器,OK吧,啊是这几项啊,给大家拢一拢啊改前端。不用重启服务器啊,咱们这个环境也不会发生什么改变,OK吧,那么你改后台这个so that,它其实不用重启服务器,但是我们还是需要重启的,保证咱们这个测试环境的干净整洁,OK吧,改为叉MLXML这个配置文件怎样?
04:06
哎,必须要重启服务器,OK吧,这要记住了啊,以后养成习惯就行了啊,好,我们现在来试试看啊,这回。来做一个点击走。啊,这回树就有差别了。这回咱们能观察到什么?哎,别盯着他看看这。啊,再来一次啊,大家注意啊,你们看观察这啊点。差不多三秒啊,对吧,那我现在改成这个false呢。Got on false。来看哈。点,那这个概念必须要明确啊,跟刚才一样吗。不一样,这个这个这个差别很明显了,对吧点。
05:00
行,咱们先来总结一下这个第一个啊,为true的啊,为true的TE的这个啊,咱们根据这个观察的结果来总结啊,点这个123是马上就谈了。对吧,好,那么它所执行的这个效果是什么?大家注意啊,默认的情况下,以及你填一下这个处,它都是走的是一个异步,能理解吧,它所执行的是这样,大家注意啊,我们现在啊,就相当于什么呢?是不是相当于我一点击这个按钮,相当于进入到这个click function这个方法里边来了,对不对?方法呢,它执行代码的顺序是从上向下执行的,这一点肯定是没有疑问的,对不对,好代码我现在啊执行执行执行,诶我当我执行到这个Dollar点阿贾克斯这个方法,大家注意啊,是不是一步。什么叫一波呢?一波指的是。为这个到点阿贾克斯方法啊,单独分配一根线程OK吧,好,那大家注意看啊,我从上边到下边这根主线程注意看啊,到这儿了,诶我要执行你执行你啊另一根线程执行谁去了,是不执行这个后台去了,执行后台直行后台怎样,然后再做回这个响应,是这样吧,是先执行后台后执行这个回调啊这个主线程停没。
06:15
他没停,他绕过了什么,这个到了阿贾克斯直接执行了这个alert,所以说这个aler塔没有等它,OK吧,我们全程其实是两根线成的,OK吧,啊是这样啊,比如说老师用手给你们比划一下啊,代码从上下下直行直行直行直行到了阿贾克斯对不对,好注意看啊。是不是单独分配一个线程走后台去了,执行阿贾克斯去了,对不对,好,这根线程停没没停,诶他继续走下边个乐腾OK吧,好,这个就叫做咱们这个异步的这个操作啊,好,我们来总结一下啊,这个关于同步和异步啊。好,关于同步和异步,好,我们设置啊这个aic属性啊。
07:12
好为触或者是不设置啊TE啊这个模式呢是。异步对吧,那下边那这肯定很明显是什么呀,同步对吧。等于这个。啊,这个是。同步OK吧,好,那么我们先来总结一下这个异步的啊,大家想一想啊。来,在最后观察一下这个效果啊,点123数,马上弹了,过三秒钟之后,阿贾克斯走完了,他再弹,是这样吗?好,也就是说我们通过观察啊得到。结果。也就是说下面的。
08:00
我弹。根本就没有等到什么呢。上面的阿贾克斯执行完毕后,就。执行了,是这样吧,执行没有等到上面的阿贾克斯执行完毕啊,就执行了,OK吧,好,我们全程啊是这个啊两根。线程OK吧,一根这个啊主线啊好负责。执行方法中普通的代码啊,一根线程负责执行谁呢?阿贾克斯,OK吧,好,两根线程啊,彼此之间啊,相互。独立。
09:00
互不影响啊。是不?互相是不受影响。影响的好。好,那接下来我们再来看一看这个同步啊,把这个处啊。改成一个。F。点我没谈。对吧?好,当我这个过了三秒钟之后执行完阿贾克斯了,我们回到函数执行了123456显示出来之后,咱们这个123才弹出来,是这样吗?好,也就是说啊,咱们这个头部跟异步啊正好相反,咱们这个头部呢,才是我们平时所认知的这个代码执行的流程是这样吧,也就是说这回啊,我们通过观察这个得到的这个结果啊好,下面的A了弹框,它必须要等到什么呢?
10:09
上面的阿贾克斯什么执行完毕后才能够?直行是这样吗?好,咱们全程啊,是几根线程同学们。一根线程是这样吗?这根线程怎么执行呢?来看看啊。好是这样的啊好,线程进来了,是不是执行这个阿贾克斯啊,诶你不要走后台吗?跟着你走后台啊,执行完后台是不是执行回到函数执行完毕之后,是相当于阿贾克斯执行完了,行完之后执行谁。Alert,全程就一根线程,OK吧好,那么我们代码啊,这个线程啊,是按照代码从上上下的顺序干嘛呢?依次执行OK吧,依次执行啊下面的代码必须要等到上面的代码执行完毕后啊才能够执行OK吧好,那未来我们实际项目开发中用哪种形式呢同学。
11:24
为啥呀,你得告诉我道理啊。实际项目开发中啊。一般情况下啊。啊,一般情况下,那肯定是肯定是默认的对不对,总默认的对不对,好一般情况下啊,我们都是使用啊这个啊。义务请求啊,可以这个有效的。提升用户体验OK吧,好在特殊的这个需求下啊,特殊需求下好也会使用到这个同步啊好呃,这两句话啊,咱们这个分别来解析一下。
12:11
啊,也就是说,呃,我们为什么说这个异步啊,大家注意啊,为什么说咱们这个异步能够有效的提升用户体验。来看一看,咱们新来一张图啊。其实这个东西很好理解啊,比如说我现在再给你画一个这个页面啊,比如说这个页面需要展现十条信息啊,比如说展现了第一条。第二条大家注意看啊,我在展现第三条的时候,服务器出现了问题。看到没,服务器出现了问题。总之啊,展现第三条的时候受到了阻碍,出现了问题,OK吧,好,大家想一想啊,如果是同步的话。
13:00
如果是同步的话,我第四条会不会展现?不会,他必须得等待什么呢?第三条展现完毕之后,第四条才能展现,是这样吗?那如果是一步呢?哎,你自己哈,展现你自己了对不对,你自己啊,反正你是局部刷的对不对,与我第四条无关对吧?好,所以说啊,你在这啊,自己增大你自己呢,OK吧,第四条我该展现展现能理解吧,所以说一般情况下啊,咱们都是异步请求,能够有效的提升用户体验,OK吧,好,但是啊,下一句话怎么解释呢?在特殊的需求下,我们也会使用到同步,什么意思?啊。也就是说啊,我们经常会遇到这种情况啊,我们在执行下边的代码之前,显示下边的组件之前,它首先必须得干嘛呢?它的前提是上边的东西已经显示好了。
14:04
OK吧,也就是说通常我们进行一些个表单的这个验证,有可能会出现这种情况,OK吧,只有上边的验完之后,我们才能验下边的。OK吧,只能只能是按照这个顺序来OK吧,上边验完之后,我们才能验下边的OK吧,所以说这个东西是不是就得干嘛呢,按照这个顺序,按照这个流程来啊,上边都执行完毕之后,下边才能执行OK吧,好,呃,但是这种情况没有咱们这个一步用的多啊,一般情况下咱们用这种默认的这个异步的形式就可以OK吧好。到时候人家这个考试的时候,万一面试问到这种问题了啊,这得会回答OK吧,好。
我来说两句