00:00
啊,下面啊,下面我再说一个功能。我就。再来一个吧。别在那上面写了。好,我再说一个呢,刚才是点击取消按钮,是不是取消,下面我想说有这样一种,有这样一种情况。什么情况呢?我点击啊发送请求一大家看好了,我跟大家演示一下这个情况,我点它这里就点它这里就点它有点他,我是不是一下子连续了好几个请求,我想说一个效果。我跟大家提过什么意思呢?我会点它,接着点它,好,我如果再发请求列表二的时候,如果我发现请求列表一的请求还没结束,我应该给他什么呢?取消掉,是不是有这种可能性?现在功能实现了吗?
01:00
没有。能懂吧?不是说要专门去点这个按钮啊,而是我在准备发一个新的请求,发一个新的请求之前,我把前面未完成的请求给他什么取消掉,这个是很有可能的,对不对啊,这个比点击按钮这种可能性更大。那这个时候就得想一个式了。想一个什么事情呢,大家注意看好啊。当我准备发请求前,我执行这个函数是不是准备发请求去了?这是不是准备发请求去了?执行这个函数不就发请求去了吗?要发请就行了。如果我发现这个有值。你说说明什么?也就是说,如果if我发现它是个函数,或者它有值都行啊,那说明什么?说明还有一个未完成的请求对不对?因为我们一旦请求完成是把它为空,那我干嘛去执行呢,是不是?
02:16
是不,我还写啊啊就写一个随便写个,写一个写一个就是什么呢?就是取消请求,写个简单的听懂吗?好。注意啊,也就是说在准备发请求前,在准备发请求前干嘛。取消未完成的请求对不对?我怎么知道有请未完成呢?其实很简单,就看看是不是函数是不是,它是说明是不是有一个请求未完成。对还是不对,对的啊好。那你说这个后面都一样的写法吧。
03:03
下面这个呢。其实代码什么。一样,你看写了吧,现在呢,我在这里面是不是也要写上配置是吧。你要感受啊,现在我这个写法是不是重度很高啊,无论怎么失败都干个什么事了是不是?这个是不是也得了。可了吧啊,刚才那个没写吗?来,都写了,有事没了,无论成功失败是不是都要写上,都写了吧。而且大家注意,现在我们就要去看。能不能做到这一点啊,来试一下。我点我点,我点我点。好像什么。
04:01
好像没有效果呀,这不都完成了吗?是不是道理啊,都完成了,哎,这个跟我的想法不太一样,是不是来看一下。嗯,看一下。嗯,这个地方要去说一个事情啊,说一个事啊,什么事情呢。注意啊,注意这样一个事情啊,这样一个事情,呃,我去我去点它啊,我去点它,我看一下啊,我们来去看一下那个,先看一下那个程序运行流程吧。不管这么多,先看下程序的流程。这不是这里面这里一个。哎,不对啊,这个代码。没有在我的里面,是不是看着。这是我后来改代码吗?这是我前面写的第一个代码,我新创建了一个新的文件,我没有重新什么。
05:06
运行对还是不对,等于干嘛。打开一个新的才能用上我新的代码是不是。好。啊,有的时候啊,就会出现这种状况啊,你写多了,你看有些测试过程中就有可能出现这种情况啊来注意啊,看着这个就行,主要看着这个请求。我点我点我点我点我点我点。好像有的行,有的什么不行,有点小问题。对不对,好,所以我们先慢慢点,但是点太多。点一下走,是不是第一个取消可以。是吧,第一个取消可以啊,没有问题。好,我这是不点一下,我点三下。啊,刚才点两下应该说啊,来点我点我点。
06:02
哎,后面就不对,是不是。也就是说第三次的没有把第二次的改成什么,取消掉。啊,取消掉这个地方啊,这个地方有一个地方应该是我觉得有个地方有点小问题,什么地方呢,我们出错是不是有两种可能性。一种是什么?是确实我请求出错了,还有一种是不被取消请求出错了,对还是不对,对的,我这个得区别对待。啊,大家看我们这边都该写的是不是都写了对吗?这个地方也就是我怎么识别到底是取消请求的,呃,那个情况还是说我的请求真的出问题了呢,是不是得区别对待。你说我怎么到底怎么区别它到底是一个请求的错误,还是个取消请求的错误呢?其实这个地方这个error是不是有可能是一个是一个L类型,好X access有一个方法啊,叫一直council什么意思。
07:16
是不是个C类型的L能懂不?那我把这个L如果传进去。对吧,L就是什么,这是不是请求出错了对不对。这能懂不好来啊,那在这里面在这里面,我在这里面啊,我会区别对待是吧,这个是什么,那我写个打印。嗯,请求取消对吧,请求取消的错误可以吧,其实这里面它是不是也有个message I点什么。
08:02
麦啊,这个我也不要了,艾也不要了。好,那其实这个地方啊,这个地方来,呃,是请求一吧,说一下是请求一被取消了对不对,说明确点吧,能看出来对不对,好。这里呢?对应的是什么?请求啊。对吧,好。来注意注意,我来点一下看好了,我来点一下啊,我来点一下接着走走走走走可以。你说我刚现在写的跟刚才提的有什么区别?比如说做了个判断,关键点不在这里。我在如果是一个取消的之后,我去把变化了吗。故意刚刚才没注意,我有意的,没说能看到吗?是没有。
09:05
刚才是不是相当于无论你是什么类型的请求,是不是都抗诉了,所以有个问题,如果你想想看啊,我发了请求,一接着我发请求,二是把这个他的那个看守变为了接着指印了一个新的看守。是不是?你想看?啊,那个新的看守会被他什么呢?被这个你想想我是这么做的,看好了我这么做发请求一正在请求的过程中,是不是接着准备发请求二是吧,注意啊,准备对不对,那我干嘛去。把那个取消请求,并且把是去请求请求一吧,最后请求一取消它请求一的回调函数是不是就会去那个回掉函数是不是会去把那个CRL变完了。但关键是那个操作是异步的。那个操作是异步的,而我指定新的C是什么?我是不是相当于指定CR了,这个角对应C1,这个对应C,我本来是不给指定了一个新的值,但最后呢?
10:13
被那个回调函数给了什么?就被那个回调函数浮空了呀。说白了是个什么事情,看好了,我现在如果不是发呢,我这里面也写个抗了,问题就在这里。你要知道这个失败的回答数,无论成功,失败的是不是都是一不执行,是不是我注意我是不是先点的第一个按钮,发第一个请求。开始存的是第一个请求是。这个代码是同步执行的,对不对。是不是立马会成一个新的手?好,没问题是不是好?接着我又点了第二个按钮。是否发现?C的函数,那我把它什么取消掉,这个取消会导致于上面的这个回调函数是不是异不执行?
11:04
但他会立即执行吗?不会是放到回旋队列里面去了吧?注意啊,看好了啊,如果我这里写个康了。对吧,那现在问题就来了,我现在是不是立马又去验了一个新的手。对不对。全局变量是不变成了一个新的函数。后面是不是他执行。后面是不是这个失败回答执行有什么问题,他把这个指定会让了我,接着我是不是又点了一次,第三次点击发请求,是不是准备把第二个请求是不是取消掉。能取消掉吗?因为发现什么没人对吧,被最浪了,但其实那个请求还没结束对不对。能不能听懂,说白了就是一个事情,如果我是一个被取消请求的异常,我能到吗?
12:08
不能,我会把后面的一个请求的后面一个请求的cos函数给错了,就没有机会被取消了。为什么刚好点两次行对不对,能听懂吗?大家看好了,我这样我又不行了,因为我都指定了看什么了,我第一个点能取消接着了。取消不了,为什么取消不了了?是因为第一个被取消请求的失败的回调函数把第二个请求对应的函数给了什么上了,那我第三个请求准备去,能取消第二个请求吗?不能,它对应的函数已经什么函数被上了,但其实他开当时他的请求其实没有完成,是不是是可以取消的对不对?那我取消掉了吗?没有,那不都有问题吗。那怎么做呢?注意这个地方要给他什么?
13:05
是不是住掉?这里面是不能写康了,说白了就是我们这个错误处理是要分别对待。这是不对的,对的。还有一个事情,还有一个事情。我这个失败的啊,我这个失败的回旋函数,如果想啊,如果想去啊,向后传递的话,那我就需要去干嘛,去一个错误的promise,或者这个error,是不是如果我到这里就结束了,这个处理就完成了,那我就完了吧,能听懂不啊,能听懂啊,一般这么就完了就没事了,但是有个问题。你说现在我这个编码有什么问题?重复度非常的什么高。你没有看见两个请求之间写的代码是吗?很像,也就是在我发请求前,我是不是总是要去做这个事情?
14:04
是不是,而且每个请求是不是要写这个配置。而且还一个每个发请求的是不是都要有一个这样的一个错误处理。那你说我就不能不做这么重复了吗?不重复不行吗?相同的东西不要重复嘛,对不对,你用谁帮我做。告诉我。发起游学,我得做一些事情。你想看我还有第三个请求,第四个请求,每个是不是都得写,烦不烦啊?是不是也就是说,我想在发真正发发请求前做一些什么事?做一个配置啊,加一个配置啊,做点事情。我应该在哪做啊,在哪做。对呀,拦截器啊,拦截器。
15:03
咱不有请求拦截器和响应拦截器吗?请求拦截器统一说请求相关的事情对不对,我要响应拦截器了,做响应的处理是不是。是道理吧,来改造一下,功能是一样的,功能是一样的,好,那我们得写上一点。先说是不是要使用请求拦截器啊,使用或者添加吧请求拦截器,当然也要添加什么响应拦截器,做一些事情来先说添加请求拦截器。怎么说XS点?点请求是吧,有个方法叫什么use,好,这个时候我只需要去指定成功的回调就行,失败的回调我不用指定了,而且成功的回调总是给你一个con,而且你必须返回一个什么con,但是你可以往这个康对象里面添东西。
16:13
对不对,我们这里有两个事情要做。哪两个字了,如果再啊,如果再准备发请求钱,就这个事情把它拿过来。执行这个拦截器,说明我是不是准备发请求去了。他发了吗?还没有,是准备发呀。是不是搞定一个事情呢,还有一个事情可以做什么事情呢?这个配置是不是都一样的。是不是,那你说我这里面,那也就是说我是不是要去给添加一个talk的配置对不对。是吧,添加一个什么配置,那怎么样添加一个这样的配置呢?跟下面写法就不太一样,应该是给他添加配置,不就添加个属性吗?是不是道理。
17:12
值是多少呢?只是个什么?就是这个嘛。不是吗?我是往配置里面添加了一个配置,也就我整完了以后,我还需要这个吗。不需要不需要干掉啊,当然我这个下面的需要吗。不需要干掉,不需要干掉。你看。是不是现在我每一个具体的请求是不是很轻松呢?统一由了谁来做?请求拦截器来帮我们去做,对不对?体验到请求拦截器的作用了吧?啊,这是一个事情,还有一个事情,我们也连接什么响应拦截器,是帮我们做一些事。
18:06
那我们用小浏览器帮我们做啥呢?来先写一写,哎,下次点什么。点。是吗?那我们是不是成功的回调,失败的回调?成功的回调接受的是什么呢?Response,那失败的回调了?还呀是吧,这一个注意你怎么着,你也要返回一个什么,至少默认是到返回方式传递下去,你要不写这个response吗。不行,那你后面成功的回调就得不到正常的数据了。对吧,关键是你在干嘛呢。注意这里面我们是不是可以对用于被取消的请求做统一的处理,那其他类型的错误我就我就不处理了,可不可以不做特别的处理了啊,或者说做一部分吧,看好了看好了,我这个拿过来。
19:12
看好啊,拿过来一一旦到L说明是不是有问题了,当然是不是两种情况,一种这个是取消请求的错误,对不对,对吧,那我是不是做处理是吧,做提做诉讼处理,我后面呢,不用再处理,不用专门再处理取消请求的情况了,你说我应该怎么做。也就是说白了,后面你不要判断这个事情了,你只需要去管。请求失败的情况你也不要管。那你说怎么做?
20:02
那我这个地方你说这样写着那个请那个链会传下去了吧,但是我不想传上去,上面只用处理请求失败的情况,不用处理取消请求的错误。我怎么让他不传下去呢?这个得传过去,这个得传过去,我先把它放浪这个事情都一样的,是不是一样的事情我是不是一样的做啊,不一样的事情,特别的事情我是不是特别的做。能听懂吗?这个就不取,不是请求一了,是请求被取消的错误,对不对。那上面是不是要中断请求,而下面是不是要将错误继续向上传递?这个怎么做?把将错误向下传递就最简单办法是什么,对不对?
21:04
对对对的,当然我也可以这么做,Promise reject啊,你看现在就体现我们对于promise的啊熟练度了,理解程度很重要,穿个什么,哎哟。是不是都可以,就是将向错误向下传递,传递最终是不是传递了我后面指定的失败的回家函数。也就我这个回调函数使用处理什么请求失败吧。哪种情况不用处理,取消请求的错用处理吗?因为我前面是不是说银数量,但是是我这写对吗。那我得干嘛去?我是不得中断,怎么中断?
22:03
一个接着对不对。对吧,对的啊好,那我后面的事情是不是就很简单了。这个啊,这个啊,注意好了,包括这个我都可以因因为统一都要做,是不是我都可以不在这里做,你说我在哪做。是对对,因为都一样嘛。是这个道理,好,那我这个就很干净了,大家看到这个不用了是吧,来这个if else啊,把它去掉一些,就留下这一个。说白了你会发现从我这个请求这里面来看,是不是没有不用太去看那个取消请求相关的一些东西。
23:05
是不是正常的流程去写就行,我所有的那些通用的东西都交给谁去处理了。拦截系。功能还是刚才的功能是不是啊,但是我们现在啊,复用度是很高的,对吧,就是我们啊是高复用的。好,来。看一下。功能还是刚才的功能,看看他能不能被什么取消,看到这个请求就行,走走走走走走各位。看最后一个请求我是不是没有取消,当我的按钮是不是也可以取消的一样的对不对。对的。这个通过这个例子,大家一个是体验了取消请求的,一个使用更重要的拦截器,拦截器的拦截器是必用的。
24:05
我说再多啊,可能没有去用啊,更加实际,大家可能体验更好一点。啊,最后这个例子是大家必须得要能写的,因为它不仅练了取消,还练了一个拦截器的一个使用啊。行。
我来说两句