00:00
来我们再来接着说啊呃,那么接下来呢,我们再来给大家去讲一下每个拦截器中啊这个pro handle它的这个返回值啊,现在我们在研究的时候,一直返回的是不是都是一个true啊,对吧?好,那么现在大家注意了啊呃,我先把我这个买fast的这个except呢,把它改成fast了,看到了吗?改成fast以后呢,大家注意了啊来他也帮我部署完了,然后呢,我再去访问一下我的这个请求,我们来看结果啊走好,还是迪bug哈,我就全部都放心,哎,放心放心,完了,你看已经完了吧,点不动了吧,完了,那么完了以后呢,我们只看到一个fast and some就是什么呀,不是汉后面的东西有没有没有说明什么呀,没执行吧啊,那没执行的话也就说明什么呀,当我的拦截器的这个普。
01:00
Handle返回false以后,相当于是就给你拦住了呀,对吧,那为什么后面的代码就不执行了呢?或者说你是怎么拦住的呢?我们来看看啊,这个其实特别好分析。来到dispa solid里面这个位置是不是执行我们的pro handle啊,对吧?来进来进来以后的话,我们刚刚分析过,我们去迭代每一个拦截器,当这个拦截器的普handle方法返回处再飞一下,它是不是就正常往后走啊?但是当我的拦截器我去调用这个普handle的时候,如果它返回的是一个false,我再分一下是不是整个条件变成true了,整个条件变成to以后,它把这个R成false是不是就执行了,一执行的话,这个R成false是不是相当于是这个方法的一个结果了,OK,那么这个方法在什么地方调用的呢?在我们的dispa solid的这个位置来调用的,那么这个方法的调用拿到的是不是就是一个false啊,对不对?那我在一飞是不是变成to了,变成to以后我就直接称了,那么注意这个蕊。
02:15
称就相当于结束方法的执行了,你来看这个一称是不是我整个的这个方法就结束了呀?而在我们这个pray handle后面有哪些东西呢?请求处理方法,以及我们的after啊,上面post handle以及我们从这个地方进去以后看到的after completion是不是都不会执行了,明白了吗?所以说呢,诶,当你的某个拦截器返回false以后,就是这个pre handle返回false以后,后续的操作不会再执行了。听明白了吗?OK,注意,这是我们讲的第一个拦截器返回false,假如说我第一个拦截器是触,而第二个拦截器。
03:06
发回了,大家想想这个结果会一样吗?会一样吗?对于他来讲,对于他来讲,他后面的肯定是不会执行了,是不是,哎,但我们要研究的是什么呀,它前面是不是有一个普handle,就是那个有一个fast的那个拦截器,是不是已经过去了呀,对不对,那我们就得看看已经过去的这个拦截器啊,它会不会有一些额外的操作啊,我们看这个结果啊好。清空来,我们再来访问一下这个请求回去。访问一下好,还是断点,我们就直接放行啊,放行放行放行放行放行,诶我们来看handle first就是放行的吧,对不对,当来到三以后呢,它返回的是force,是不是就拦住了呀,但是我们会发现。
04:02
After居然执行了,你看到没有?对不对?OK,好,所以说呢,现在大家可以记住一个结论了,只要拦截器的handle会过去,那么after completion1定会知晓。明白了吗?一定会执行,为什么会执行呢?我来带着你们分析好,我们还是来到这儿,我们先来看这个位置啊,还是先执行普瑞handle,我们进去,进来以后的话,我们看这个位置,当我的拦截器过了以后,就是这个拦截器,比如说这个条件不满足,它是不是过去了呀,过去了以后,这个值是不是相当于加了个一呀,能明白什么意思吗?哎,就加了个一了啊好,那么将来当我的另外一个拦截器,比如说啊,现在这个值已经什么从负一是不是变成零了,我们不考虑那个系统默认了,我们就拿上我们的两个来讲,好吧,默认是不是不一样,那我的第一个fast过了以后,它这个值是不是变成零了,能明白吧?诶,变成零了啊好,那我的second过来执行的时候,这个条件是不是满足了呀,满足了以后他就要进行这个if的执行了吧,但是我们看到。
05:20
它在return之前还调用了一下trigger after completion,看到没有,那么我们进入到这个里面来看一下,它在迭代的时候是通过这个值去迭代的,那么我们刚刚这个值是变成零了,对吧?那么你就来想,我们现在就有两个拦截器,因为不考虑系统默认的嘛,第一个不是我的买first,第二个是买三的嘛,好,那么你看拿上零,我到这里面取的是不就是买first呀,取到它以后,你看一下它是不是也去调用了after comption了,所以说为什么会执行到这个after completion呢?因为你过去一个拦截器这个值就会加上个一,而当你的某个拦截器pro handle返回false以后,它在这个里面呢,会去额外的调用一下我们的after completion,因此它是不是也会执行啊?
06:17
明白了吧?听懂这个意思了吧?OK,所以说呢,诶,当你的pre handle方法返回false以后,我们需要诶做出如下的总结来,就是后面的操作就是当前拦截器,比如说pro handle返回false了,后面的操作一概不会执行,但是当前拦截器之前的拦截器肯定是已经过了嘛,如果你不过的话,你是不可能来到当前拦截器的吧,对不对?当前拦截器之前所有的拦截器的after completion方法它是会执行的。听明白了吗?对吧,你这个从源代码上一分析,你就分析出来了。对不对,诶好说说呢,这个结论的话,我们也需要记住啊来我就好给大家呢,再去总结到这吧,啊总结到什么地方呢?就是我们在说这个呃,After comp它的这个执行时机,其实呢,除了这个之外的话呢,它还有对吧,这是其中的一种吧,对不对?哎,这其中的一种执行时体正常情况下,那么另外一种情况就是什么呀?哎,当我们的啊,当某个拦截器的brain handle返回false后啊也会什么呀啊尝试的也会什么执行这个当前拦截器之前的这个之前什么呀,拦截器的after对不对啊诶这也是一种时机了啊好,那么其实还有一个我就直接给你。
07:56
你总结到这吧,啊,还有一种情况是什么情况呢?我们直接来看代码给大家解释啊,你看我们来到我们的这个顶度底拍这个方法,整个这个do底拍呢,它有一个穿catch,看到没有这个串,你看我把代码,我把断联了,我把这个光标放到这啊,我们往下翻是不是对应的这个方法呀,对应的这个括号吧,对吧,这个小技巧应该都知道吧,是吧,你把光标放到这,它就会找到它所对应的那个括号啊好,那么在这大家能看到这个地方有一个catch,当它catch到异常以后,你看一下trigger after the competition又执行了吧,对不对?哎,所以说呢,第三种它的执行时机是什么呢?就是当我们的。
08:42
来写到这儿啊,第三种就是什么当啊,Despite solid,什么do despite方法抛出异常啊也可能,注意这个只是可能啊,万一你没有这个拦截器呢,对吧,你压根就没有拦截器过去了,那是不可能执行的嘛,对吧?啊也可能会执行啊啊啊也可能会啊执行。
09:09
啊,我们这个拦截器的啊这样。啊,考虑什么法能明白了吗?啊,就是顺带着呢啊,我们就把这个呢,也给大家去说明一下啊,但是的话呢,我们讲的时候啊,这个情况是比较多的,大家记的话呢,其实你没必要去记这么细理解吧,你大概的还是去记一下每个方法它的一个执行时机就可以了。听懂了吧,OK,好。嗯。
我来说两句