00:00
我刚刚这模拟了一个两秒以后返回,我现在把它改成三秒,我来保存一下。保存以后我呢,先把这边服务器停一下,停了以后我重新启动一下打卡这些命令其实你不用输了,如果你输入过没有清空的话,你按上下键,它会记记忆的找你。好,服务器重新启动了,记住了,现在是三秒以后返回请求。三秒以后,不仅有这样一种场景,看着啊。我一点击发请求了两秒还没拿到,用户是不是又去点击一次啊?懂我的意思吗?第一次点击。我先卡住,它马上就亮了。马上亮的时候,如果说用户可以再次点击这个,他没有收到验证码,是不是很有可能人家再点一次啊。那这样的话导致的问题是用户现在能收到两条已知以及多条。
01:05
这不就相当于拿到两条验证码吗?那这样的话还是你做的不完美。你应该是始终让用户发出去的请求只有一条有效,如果说我发这一条的时候,上一条就不要了。是不是取消上一次请求啊?二。现在我们要考虑在我点击按钮发送请求的时候,如何取消上一次请求。首先取消请求,我们要想到about这个方法。哪去了?后推一下是不是在这,但是你看一下啊,呃,有两个问题,首先二二的方法是原生的,它的插买htp request对象的方法,这第一个问题,第二个问题。哎,第二个问题是他取消的是当前请求。
02:01
我们先来研究第一个。它人家是原生的这个对象的方法,那我问一下啊,你现在是在a two里面,或者说有可能你在几里。你怎么在这里边找到原生的那个对象?去定义一个吗。我先问一下,我这这不是收起来了吗?这个adjust这很明显是个方法调用吧。那么每一个方法调用都有返回值。这应该知道,如果说没有指定的返回值,它返回的是不定范的。现在来,我给大家打一个东西啊。我还是先把它收起来。我是不是定义那个变量,接收了一下那个返回值。懂我的意思吗?刷新下,看他lo了。
03:03
是过敏是吗?说明这些框架不管是结光还是a to,人家在分对原生的,哎,那些车卖HTB,如request对象进行分装的时候,他也给你返回了一个原生的对象。否则的话,你的bird的这个方法怎么办呢?我再跟大家说一下,不止是Dollar,浮点adjust,你们下来可以测一下,换成get和POS的,同样是一样的,他们返回的都是这个对象。而这个对象,你看一下它的状态码是多少。状态码是四吧。啊,这不就是当前我问一下么,我这次发起就返回的应该是当前的他的对象吧。对不对,你因为你只发了一次请求吗。现在我能找到我当前发请求的这个对象了,那我能不能。调用的方法呢?
04:01
只不过我取消的是我当杰的请求而已。首先到这儿,你们得需要跟得上。你想你发送请求最底层不就是最终用这个实例去发吗?人家现在是不是已经把这个给你返回来了。那你这是不能去拿到这个对象,拿到这个对象你就能调用about的方法。这没问题吧?现在我做这样一个操作,大家看着我这第一个变量去接收了它,然后。我叫他返出去。也就是相当于我这个war,你比如说我这个函出,我上来是不是声明的一个变量,接下来我用这个变量接收它的返回值,说白了我最终的目的是要返出去一个插卖HTB的识别对象。只有反出这实例对象,我才能去调用这个board的方法。好。那既然你S的差这个函数有返回值,那我能不能这样写,我在这儿也能接收一下它吧?
05:06
大家看我怎么写啊,这样很关键。我在注意了,我在点击按钮的外部,我定义给它初始化一个。骂我,我这个跟这个有影响吗?请问。没有影响吧,好,没有影响,我在这初始化为now,那我能不能用它来。接收一下他。相当于他最终是不是拿到了它的返回值。懂我的意思吗?然后看着啊。判断用户是否发送过请求。E。如果说当前的HTP是now,它转换为布尔值是。能懂我的意思吗?如果说闹的话,说明什么?说明这个请求还没发呢,就没有这一步。
06:05
对不对,那我点击按钮正常的逻辑往下走,我现在用的这个是不是全局的这个now。那他是不是为,哎,我应该是干嘛取反,说明用户没有发送过请求到现在。能懂吧,没,既然没有发送过请求,来,我先在这儿。这表示。用户没有啊,发送过请求。没有发送过请求答复,我应该去干了。是不是去发送一次。然后看着啊。我写个house。如果说用户点击这个按钮的时候,进的是else,说明什么?说明我的HTP已经接收过一些内容了,而根本不是初始化的。说明他上一次发送过请求。我能不能说明这个问题?
07:00
肯定能发送过请求,是不是要进if,你再次进来肯定是走的是else,因为它不再是no了,他是一个实实在在的对象。能懂吗?在这表示啊,用户发送过请求。我现在什么也不干,我就问下来,我去lo这个atb是哪一次发送请求的实例。是我当前这一次进来的,还是我上一次的?谁来分析一下为什么是上一次?学姐。你们说一下吧。你给大家说的完整一点。因为他他30进来的时候。他。也就是咱们第一次是不是走这个。那再一次点击的话,是不是直接走这儿。然后你能说明什么呢?
08:03
哎,对。挺好。在。就这个意思。你比如说你第一次起球,他是不是接收到的是第一次发送请求那个示力对象。然后第二次再次点击的时候,我直接走的L,我根本根本就没有动过这个变量。那他是不是一直保存的,还是上一次那个对象。所以我在这个里边能不能做这样一件事情。这样的话,是不是找到相当于在这干的活是取消上一次发送的请求?爱就是利用这个东西。就是利用这个东西。取消上一次请求还不够,记住了。你相当于把之前那一次作废了,但是你这一次是不是还是带着任务来的?干嘛?很好,再发一次,这一次我是不能保证发的是我当前这一次呢。
09:04
大家能理解吗,这个。理解不了没关系,我可以再讲这个一定要理解了,其实这个你们以后很有可能上班能用的。等等吧。来,咱们先来看效果啊。直接看network在这能看出来看着啊,第一次去把。看,就在这看吧。有没有发现我每点击一次新的上边那一次请求变红吗?变红的本质原因是当前的请求已经作废了。难道不?请求作废是什么意思?我和大家说一下,你那个请求不是发出去了吗?只要说我发新的请求的时候,我上一次的数据没有收到,我不管你是在去的路上,还是在回来的路上。我调用about的意思是相当于把我接收的这一道大门关上了。你的数据进不来,所以作废了。
10:02
难道吗?而我要有效的是,只是最后那一次。还甚至还有的同学考虑说,如果我发出去请求了,我数据已经拿到了,诶,你再掉多少班还有意义吗?你说有意义吗?有的同学是这样讲的,说老师那人家网速好的时候,你两秒以后才可以,不是再次点击吗?你再次点击的时候是吧,才会取消上一次请求。如果说我一秒用户就收到数据了呢,你这样写是不是没有任何意义啊。有意义吗?我说的是网速好的情况。这种情况是最好的,就是根本不用我们去取消上一次。你想用户一点击就拿到验证码。他再点击让他发就是了,你这种用户你能拦住他吗?人家一天没事干,就坐那儿发了一天一堆话,你拦不住这种人。
11:02
对不对,那网速好了,谁能管管得着他,我们针对的是网速不好的情况下。哎,如果说他都收到一条验证码,他死活不输,就在那等,等能点了他再点这种人就让他打游戏机去玩吧。啊。
我来说两句