当某对象需要图片资源,开始请求,请求成功后,既需要立即返回资源,同时将其缓存起来
- downloadFile 会把 下载 & 缓存 合并成一步,但是 缓存请求并发集中时,会卡顿,所以需要 在请求成功后,立即返回资源,但延后缓存。
- 所以想到了 两种思路
- -a·使用wx.request去请求资源,成功后,立即返回资源,然后延时writeFile,但问题是,我请求来的是arraybuffer数据,然而立即需要返回的是一个 HTMLImageElement 对象,我不会将arraybuffer数据 转换成这种对象
-b·另一个思路,img.src=xxx 然后在回调里 我获得了HTMLImageElement 对象,但是 我不会将他缓存起来,因为 wrtiteFile格式需要string/arraybuffer 所以还是 卡在两者的转换上。
求大神指点迷津
顺便问一句,我自己在尝试,去看image的定义与生成,看adapter中,逻辑还勉强看得懂,然而第一句,
(function(m){
function r(c){/*...*/};
return r(0);
})
我是懵了,这也不是自运行,他是怎么运行的呢,怎么生效的~ 知识盲区了~
自问自答:
egret.BitmapData.create("arraybuffer",res.data,(b)=>{
这样即可~
总结来说就是 request 得来的 arraybuffer 数据 通过 bitmapdata 自动转化为了 egret 识得的 格式~