00:00
不是那意思,你看我给举个例子哈,假设呢,呃,你看咱们就是其实跟这个图很像哈。跟我们刚才画这个图很像,就是这个,如果换成吃饭的话。你如果是去饭馆吃饭。你去,你亲自去饭馆吃饭,你,你先是得点菜吧。你现在点菜吧,你点完菜以后是不是这个后厨给你去这个炒菜。然后呢,炒菜完了,下一步呢是上菜。啊,那你这个过程你是不是就得按这个顺序来啊。啊,但是就是这个时候呢,呃,你家里边呢。你没办法。你没有带着电脑来饭馆,你就没办法在你因为你电脑在家,你就没办法一边等这个菜,一边打英雄联盟,你就做不到对吧。但是呢?你要想,你要是如果你想这个,又一边等这个菜来,一边在家打英雄联盟,你怎么办?
01:03
哎,点个外卖就行了吗?你你点菜了,点菜呢,这个时候其实这个事儿你就分成两个线程了。啊,一个是这个,呃,这边这个饭馆呢,给你这个炒炒菜。另一方面呢,你在这边呢,在撸啊撸对吧。哎,然后呢。然后呢,这边炒,炒完菜呢,人家这个小哥呢,给你送来,我把这个。往这边一点啊。哎,然后呢,这个小哥呢,外卖小哥呢,给你送餐。然后呢,他在路上风吹日晒的是吧,然后你多幸福,你在这打撸啊撸是吧。A。然后呢,这边人家送餐以后上门,人家这边敲门,然后这边你这个去收货。等一下我打完这一局是吧,没错。就这么个意思哈,你看我们这个时候你在这儿等,你在这儿等餐的时候。
02:03
和他炒菜这个过程,这是两条线。这时候这个就是这操作过程中,这是这个谁也不用等谁,那就是这个你你你你你干这个和他这个他们互不干扰,这就是这个异步的。这就是一个异步的啊,所以说生活中很多事儿可以有同步的方法做,也可以用异步的方法做。对吧,哎,这个事儿,这个还是说生活中很多事儿是可以和我们程序连起来的啊。那么归根到底呢,我们同步和异步的本质呢?不管是Java在吗,还是在浏览器上,其实都是这样。同一个就同步的话。同一个。现场内部。哎,同一个线程的内部,我们按顺序执行。哎,异步的话呢,就是不同的就是嗯,多个线程。同时。并行执行,谁也不等谁。
03:05
哎,谁也不用等谁,这就是异步的。我们后边呢。嗯,就说这个这个这个汤姆K哈,如果说他这个我们并发处理这个请求。老是高并发,高并发的哈,这个toca里边不有个线程池吗。每一个请求过来,他们开始拿一个线程分配给这个请求,处理这个请求。哎,来一个请求,处理一个请求啊,那么这个时候这个线程池里边线程耗尽的话,那这时候你就得等哪个线程释放了,你再去处理。哎,然后呢,还有在我们分布式系统的这个内部呢,使用这个消息队列这样的东西啊。哎,后边我们到电商的时候学这个消息队列呢,也是在我们各个模块之间呢,它可以帮助我们做一个异步的一个通信。啊,所以说这个大家去这个同步和异步的理解哈,哎,慢慢去培养自己这样的这个意识啊。可以从这也是一个我们去看项目程序它运行的一个运行模式的一个视角。
04:03
我们为什么要讲这个事儿呢?哎,就是我们到角色这边正在改查呢,我们是想这一套呢,全是用Ajax交互的方式来做。啊,全用A方式来做。呃。那么我们分页呢,就想把它拆分成几个模块。比如说我先先第一个模块呢,就拿到数据,第二个模块呢,来生成这个表格,第三个模块再来生成这个页码。那么我第一个模块要拿这个数据的话。你就不能是异步的,我异步的去拿这个数据。回来。然后可能我还这个响应还没回来呢,我下边这个地方呢,它去生成这个表格的,可是没有数据,这边就数据就显示不出来了,这个执行完了,这个响应才回来,这个已经晚了。哎,我们拆分开呢,就是希望我们这个代码写的这么写,模块化程度更高,让大家呢,能够进一步把这个代码拆分成几个小的模块,一个一个去做。
05:05
啊,让大家去体会这种模块化组件化的这种编程,所以说呢,咱们去把它拆分开啊,所以说拆分开呢,我们这儿使用一个同步的方式去取这个数据,我确保第一个模块。第一个小函数,拿到这个数据,第二步再去生成这个表格,诶。那么这个时候这个不牵扯生成表格,不牵扯拿数据,没有AX这边就按顺序执行,后边再生成这个页码就好了。啊,这是我们说为什么要讲这个。嗯,好了,那么我们今就先讲到这啊。
我来说两句