关于cancel的问题
老师您好,关于cancel我还是有点搞不明白,既然在第一次请求数据的时候已经把c赋给了cancel,那么在第二次请求数据的时候无论如何也会走 cancel && cancel()这个判断的呀,可能是我不清楚cancel的工作机制,我就是比较困惑这一点。 为什么第二次请求数据如果间隔时间较短就会走cancel() 但是如果间隔时间较长控制台就不会有什么显示
正在回答
你好,首先非常抱歉,老师以为你问的是整个函数是否会执行。所以上个回答是针对整个函数的。
是的哦, cancel函数这里的话是上一个请求如果执行完了,就不会触发哦,可以参考下如下,进行理解。例:
希望能帮助到你,祝学习愉快!
你好,如下是执行的过程,可以了解下:
1、第一次发送请求的时候,是因为定义的cancel没有赋值,是undefined。然后又进行了 cancel = null;
2、然后接着往下执行,如下图,这里cancel进行了赋值。被赋值cancel,是c这个方法
3、然后第二次请求的时候,执行了cancel && cancel('取消了前一次的请求!');这个是判断cancel 是否为真(即是否存在),存在的话,进行了调用,取消了前一次的请求!(因为取消的是前一次请求,所以)
4、接着 cancel = null;执行了重新赋值为null。因为如果不是快速连续请求几次的话,是不需要取消了前一次请求的!所以这里赋值为null,这样便于判断下次请求的时候,是不是连续点击的请求,来决定是否需要取消了前一次的请求!
另,每次发送请求都会把c赋值给cancel,然后使用cancel来去掉上一次的请求,但是这样下次再执行的时候,cancel还是等于c,还是有存在的,所以还会取消上次的操作,所以这里在取消操作之后,给cancel赋值为空,若是下次在操作的话,再给cancel赋值为c,没有操作的话,就是null哦,null的话,没有前一次的操作,就不需要去掉前一次了哦。
若能帮助到你,望采纳。
祝学习愉快!
- 参与学习 人
- 提交作业 209 份
- 解答问题 3299 个
本路径是通过ES6基础知识、运用Zepto、Swiper、fullPag等移动端常用工具包、以及当下流行框架Vue,结合多个实战案例,还原真实开发场景,最终实现手机端购物商城网页开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星