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);
果然解决问题!