jQuery.each和setTimeout方法小体会

jquery在遍历选定的对象时候用each比较方便。有时满足了某种条件之后,要跳出这个循环。

我们都知道跳出循环一般用break;终止本次循环计入下一个循环用continue.

不巧遇到这个问题,each遍历时下意识 的用了break,想跳出这个循环。结果报错

SyntaxError: unlabeled break must be inside loop or switch

 

 

 

 

在each遍历时,return false就相当于break,

return true相当于continue。

 

如果想和java中一样的感觉,那就只有这样了。(特别注意,for循环里面就不要return了哦)


 

 为了更彻底了解此场景,可以查看JQ源码,each方法其实是这样滴:

 for (name in object) {     
                if (callback.apply(object[name], args) === false) {                     
                    //如果在callback回调函数中使用return false;则不执行下一次循环   
                    break;   
                }   
            }   

 这下就大彻大悟了!

 

另外在处理购物车编辑功能时,用户触发更新购物车操作,既希望浏览器能快速响应用户的请求,又避免对服务器额外的压力,减少重复刷新请求操作。

 

setTimeout肯定是要派上用场的。之前的写法 :

         setTimeout(function(){

                            console.log(“刷新购物车”);

},1500)

每一个请求过来,都只是一个延时动作,事实上每一次请求还是都执行了刷新购物车请求。

 

查询网上资料,又有意外收获:

         setTimeout() 方法的返回值 (数值),用这个数值来唯一确定结束哪一个 setTimeout() 方法

 

杀死之前正在等待的方法,这样就能减少请求了。利用setTimeout()的返回值。

 

      Var update=null;  //一定要定义全局变量,避免第二次初始化了

 

if(updateT){

                  clearTimeout(updateT);

              }

              updateT = setTimeout(function(){

                  console.log(“刷新购物车”);

 

              },500);

 

果然解决问题!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值