JS 讲解时效缓存与延迟处理

来源:互联网 发布:淘宝联盟软件下载 编辑:程序博客网 时间:2024/04/28 05:46

前述,举个例子。我就是我上次写一个百度地图框架的时候。

第一种情况:

地图里面有一个拖拽事件,用户在地图拖拽到某个区域。地图会自动计算坐标。显示该区域的所有商店标注位。由于数据是动态的,如果你不停拖拽,拖拽一下就去后台请求一次。那是性能消耗太大了。而且也没有必要。

第二种情况:

当用户拖拽完后,会去显示标注位,显示标注位的时候,会去计算地图的边界值。如果重复去调用的话。每次都重新去计算就不太好。但又不想把数据静态缓存。数据缓存需要时效性。就是当它过了这个时间。缓存数据会失效。


debounce 函数(func,wait,[immediate]) 介绍

返回 function 函数的防反跳版本, 将延迟函数的执行(真正的执行)在函数最后一次调用时刻的wait 毫秒之后. 对于必须在一些输入(多是一些用户操作)停止到达之后执行的行为有帮助。 例如: 渲染一个Markdown格式的评论预览, 当窗口停止改变大小之后重新计算布局, 等等.

传参 immediatetruedebounce会在 wait 时间间隔的开始调用这个函数 。  

var a=debounce (function(){  console.info("1");},1000);// 当你调用a的时候,连续不停的调用。它是不会被触发的。当你最后一次调用后,过1秒钟。它会自动触发

var b=debounce (function(){  return +new Date;},1000);// 当你调用b的时候,连续不停的调用。它返回都是第一次生成的时间戳。当你过1秒后,再去调用,它会再次生成最新的时间戳。



下面是我的代码,实例。你可以看到我注释部分有用到这个。这个方法在代码中很实用。


0 0