`
xiao_2012_wei
  • 浏览: 30815 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

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);

 

果然解决问题!

  • 大小: 3.4 KB
  • 大小: 4.5 KB
  • 大小: 4 KB
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics