00:01
咱们说一个这个事儿啊,咱们去充分利用一下咱们这个时间。嗯。我把这个笔记呢,咱们去复制一份啊。哎,这个上抽吧,这个是加餐。啊,其实我是不知道起个什么名好了哈。好。加餐啊,然后呢。嗯,我们这个是Ajax的同步和异步请求。嗯,目一般来讲呢,我们Ajax呢,都是做都是异步的。但其实呢,就他也可以按照同步的方式来做。我们怎么能够感觉到哈,咱们怎么感觉到它。这个还是咱们得写一个测试的一个东西哈,咱们在web APP下边哈。咱们重新写一个,咱们写个test吧啊。
01:04
这个应该不影响吧。再来那个巴哈。嗯,发送一个Ajax请求,咱们先来找一个普通的。这个应该这些都正常哈,所以这边咱们直接写这个script。给他绑定单项数。呃,给他绑定单机小数。然后呢?啊,这边一会,因为我们还得另外再写一个哈,咱们给他个ID吧,啊,这个是一个。呃,咱们先发一个异步的,默认就是异步的asy nc的,呃。A snch的缩写啊。嗯。异步的按钮。
02:03
诶。嗯,点它,然后发AX请求。第二。哎呀,这个时候找谁访问一下呢。写这么一个。嗯,在这写吧,写写离得近一点吧。呀,不行,咱们这个没有扫描。得让他还是放这吧,这个来一个case啊。看错了。嗯,然后呢,Response body。Request。
03:00
哎,这个是要做一个test aja。三二卡异步的默认就是异步的。就返回个呀。就返回个字符串吧,啊,反正这个我们只是个测试啊。ASYC。就是服务器端返回一个success。这是我们请求的UR地址。啊,因为因为这个时候它返回的是个普通的文本啊,这就不用写介绍了。诶,然后呢,这边请求方式来一个post。哎,然后呢。呃,就不发数据了,没有数据data type。我们返回的就是个普通的文本。然后success。
04:00
哎,同步异步的区别就在success这了。我们在这儿呢,咱们去控制台呢。打印一下这个response。嗯,Error先先不写了啊,这不出错,咱们先不写了,那么你看这个时候这个。嗯。这个是发Ajax请求。啊,然后呢,我们在它下边呢,再做一个打印。这这个是。Ajax函数之后。甚至说我在他前面呢,咱们可以打印一个在他之前。然后这个呢,我们写一个啊,就是我们说这个Ajax函数。内部。
05:00
其实是我们success这个函数啊。加上response。呃,要是如果我们不仔细想这事呢,说应该执行的话,先执行它。在执行它再执行他看到顺序应该是他他他。但其实呢,这个事儿哈。我得说不一定。不一定。我也没有说这个东西一定会跑到他前面,就说这个事儿呢,肯定先执行他,但是这个和这个哪个先出来其实不一定。哎,就是我们。呃。为了为了看到这个效果哈,咱们如果保证它在这个的后边,我们在这儿呢,咱们可以干这么个事儿哈,我让他睡一会儿。不用睡太长时间,有两秒其实就应该能看出来这个效果了。
06:07
抛出去,哎,咱们跑一下试试啊。就是这个事儿其实挺好玩啊,就是这个编程的乐趣呢,这里边儿又体现出一个编程的乐趣,就是一个思辨的乐趣。啊,就是说这个东西呢,嗯,一个事儿如果有点绕的话啊,这个你我们把它去给它想明白这个事,我们会觉得诶非常的好玩。呃,控制台打印的东西,看这啊,这个404呢,是一个他想去找一个图标的文件,这个没有不不管它啊。我点一下他。是。对,这个页面这个地址啊,对,这儿不要写稿去。I'm sorry哈,这个怪我哈,不要洗澡了。地址不对。
07:02
嗯,过来看一下啊。哎哟,他说请登录以后再访问。嗯嗯。Ah。哎,你看这个,但是这个它没有返回406哈,这个就是200。嗯。对,这个这个我们请求的是HL,但是这个就没有。这个再琢磨琢磨吧。那么我们这边就咱们登录一下吧。哎,登录一下这边再干这个事儿哈,这个就好办了。你看这等了一会儿出现这个success。哎,所以这个时候其实是。其实按说呢,应该是这个执行完是吧,然后收到响应的执行它再执行它,但是呢,因为这个响应呢,等半天没有。
08:09
而这个操作呢,并不等他。从哪能体现出来这个异哈,在这儿我们说这个。嗯。这个是。我们说接收。到服务器端响应后执行。啊。嗯,然后下边这个呢。是在到点AX这个函数。呃,执行完成后执行。嗯,不等待我们success这个函数。哎,所以说你看它们不是一个函数啊,这个函数执行完按顺序就执行到它,但是这个success呢,和这个它俩就是就岔开了。
09:01
哎,所以说你要是画这个线的话呢。嗯。诶,我怎么挂了。呃,有一个起始位置啊,程序起始。啊,就是起始,呃,它是刚开始的这个代码。然后呢,它执行到这个dollar.aja这边呢,都是按顺序去执行的。但是接下来的话呢。又分两叉了,我们继续去执行Dollar h X后边的这个代码。和哎这个这个后面代码呢,和导HX这个是按顺序执行的。这个代码必须在他完事以后执行。但是success就不是。这个函数。
10:00
嗯。嗯,它是在服务器端返回响应以后。哎,这个到角HX,它给服务器发请求。他给服务器发请求。他把请求给发过来了。诶,然后呢,服务器返回响应。什么时候返回响应,什么时候执行这个success。哎,那么这样的话。我们。就看出来。这个AX函数呢,它后边的这个代码呀,它不等。他不不不需要去等这个完完事。那么为什么不需要等呢?因为其实吧,在浏览器里边,他们不是同一个线程。假设呢,这个如果是线程一的话。在这儿呢,做后边这件事,它是线程二。
11:04
哎,所以说不是同一个线程。他就是异步的。你看我们Java代码也是,他要不在一个线程里边,他们就谁也不用等谁,但是在一个线程里边呢,他就得等啊。哎,这个是。异步方式。工作的。异步的的工作方式啊。嗯,这是一个是先给大家做一个图解,然后呢,咱们把代码拿过来。然后这个代码咱们就这个,就看这个GS代码就行了啊。咱们就看这个GS代码就行了。主要就是看,主要就看这一部分啊。就不画框啊。
12:04
然后呢,还有就是说这个打印的这个效果。打印的效果。我们看浏览器这。哎,是这个响应这个呢,跑到后边去了。嗯,行。嗯。这个时候我问大家哈。你说这个操作。在我现有的情况下,我这个还是睡两秒不改。我他有没有可能跑到这个的前面去。哎,不是现在就在前面哈。现在就在前面,他有没有可能跑到他的后边去?我让他等的时间更长。对吧?诶,怎么让他等时间更长哈,大家在这儿set time out。然后呢,这边来一个函数。
13:00
哎,我让他隔一段时间再执行,我把这个代码呢。放到这里边儿。然后呢,这个我如果没记错的话呢,这样,比如说我让他睡上五秒。就是这个隔五秒以后去执行这个函数。嗯,看看我记错没有哈。看我这边登录了没有啊。钱。响应。然后再等一会儿爱菜之后。所以说呢,这个你不能说谁一定在前,谁一定在后。哎,这个只能说他们谁也不等谁,因为你在这条道上跑,我在这条道上跑,谁先到,那就看谁速度快。Java代码也是一样的,就是你要是要等的话,他得在一个线程上面去执行,才会互相才会等啊,所以下面咱们看看怎么给它改成同步的,改成同步以后这个效果。
我来说两句