apicloud进阶
曾经有前辈给我讲过,不要为了技术而使用技术,技术永远只是为了服务于业务,不同段位的程序员看待技术的高度不同,技术只是技术,能用技术做出来什么样的产品才能体现个人的能力与水准,尤其是当我做了如下功能之后,在平常见到的APP里面的图片都是在图片完全缓存成功之前,先显示一张图,完全缓存完成之后再显示出来。使用技术就是apicloud中的imageCache缓存,主要是利用了Javascript的异步执行。
1)在图片读取时先通过固定的算法得到缓存路径,通过路径读取文件,看文件中是否已经缓存成功,是否存在本地路径。
2)如果存在则说明已经缓存过了,直接读取,若是没有,则采用imageCache去缓存图片,在回调中以同样的方法将数据写到标识文件中,并且替换图片显示,通过标识文件就知道图片是否缓存成功。
代码封装如下:
function saveImgPathToDir(url,data,callBack){
//alert("写入的数据"+$api.jsonToStr(data));
var cacheDir = api.cacheDir;
api.writeFile({
path: cacheDir+'/img/'+hex_md5(url)+'/img.json',
data: JSON.stringify(data)
}, function(ret, err){
callBack(ret,err);
});
}
function removeImgFromDir(url,callBack){
var cacheDir = api.cacheDir;
var path = c