关于cancel的问题

关于cancel的问题

老师您好,关于cancel我还是有点搞不明白,既然在第一次请求数据的时候已经把c赋给了cancel,那么在第二次请求数据的时候无论如何也会走 cancel && cancel()这个判断的呀,可能是我不清楚cancel的工作机制,我就是比较困惑这一点。   为什么第二次请求数据如果间隔时间较短就会走cancel() 但是如果间隔时间较长控制台就不会有什么显示

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

你好,首先非常抱歉,老师以为你问的是整个函数是否会执行。所以上个回答是针对整个函数的。

是的哦, cancel函数这里的话是上一个请求如果执行完了,就不会触发哦,可以参考下如下,进行理解。例:

http://img1.sycdn.imooc.com//climg/5cde121d0001dcc612250701.jpg

希望能帮助到你,祝学习愉快!

好帮手慕糖 2019-05-16 19:03:24

你好,1、对的哦,关于null的这个赋值,是可以不要的哦。

2、这里输出测试,点击一个,慢慢点击也是会触发的,不过需要注意的是,如果你之前已经访问过这个了,可能就不会有了哦,因为已经请求过来了,所以可以换个没有请求的,或者也可以换个浏览器测试下哦。

http://img1.sycdn.imooc.com//climg/5cdd43760001038405660099.jpg

http://img1.sycdn.imooc.com//climg/5cdd437000013bc406330047.jpg

希望能帮助到你,祝学习愉快!

  • 提问者 qq_那些荒废流年 #1
    不会呀老师,如果我正常地或者比较慢地切换tab按钮的话,控制台是不会打印出“取消前一次请求”这样的信息的,只有在很快地点击的时候才会显示,所以我想知道cancel函数的作用是取消前一次还没有从服务器发送过来的请求吗?如果请求已经发送过来了,那么它就不会执行了。我打印了一下cancel函数,看的也不是很懂。麻烦老师解释一下
    2019-05-16 22:29:22
好帮手慕糖 2019-05-16 11:11:25

你好,如下是执行的过程,可以了解下:

1、第一次发送请求的时候,是因为定义的cancel没有赋值,是undefined。然后又进行了 cancel = null;

2、然后接着往下执行,如下图,这里cancel进行了赋值。被赋值cancel,是c这个方法

http://img1.sycdn.imooc.com/climg/5cdcd0c8000196f404670103.jpg


3、然后第二次请求的时候,执行了cancel && cancel('取消了前一次的请求!');这个是判断cancel 是否为真(即是否存在),存在的话,进行了调用,取消了前一次的请求!(因为取消的是前一次请求,所以)

4、接着 cancel = null;执行了重新赋值为null。因为如果不是快速连续请求几次的话,是不需要取消了前一次请求的!所以这里赋值为null,这样便于判断下次请求的时候,是不是连续点击的请求,来决定是否需要取消了前一次的请求!

另,每次发送请求都会把c赋值给cancel,然后使用cancel来去掉上一次的请求,但是这样下次再执行的时候,cancel还是等于c,还是有存在的,所以还会取消上次的操作,所以这里在取消操作之后,给cancel赋值为空,若是下次在操作的话,再给cancel赋值为c,没有操作的话,就是null哦,null的话,没有前一次的操作,就不需要去掉前一次了哦。

若能帮助到你,望采纳。

祝学习愉快!

  • 提问者 qq_那些荒废流年 #1
    老师您好,我知道这是您之前给别人的回复,我都有看,但还是不明白,首先 1.我不是很懂把cancel赋null的涵义 因为就算把它赋值成了null,但是在每一次请求的时候在最后还是会把c赋值给cancel 就是这一点我不理解 就算你之前把cancel赋值成任何东西,最后始终都会走cancel=c之前的操作不是没意义了吗?在您之前的回复里我也没有看懂关于这点的解释 2如果第二次执行请求的话是一定会调用cancel()的吧,因为第一次已经把c赋给cancel了,但为什么只有我快速切换的时候控制台就会有显示,但是正常速度切换时好像函数没被调用一样,没有打印出来类似取消了上一次的请求!这样的信息呀
    2019-05-16 11:22:39
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

热门框架Vue开发WebApp 18版
  • 参与学习           人
  • 提交作业       209    份
  • 解答问题       3299    个

本路径是通过ES6基础知识、运用Zepto、Swiper、fullPag等移动端常用工具包、以及当下流行框架Vue,结合多个实战案例,还原真实开发场景,最终实现手机端购物商城网页开发。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师