求高手帮忙分析一下错误的原因Failed to load image
发布于 5 年前 作者 guiying69 18729 次浏览 来自 问答

①在页面的data中有如下数组:

goods:[{id:1,pic:“wxfile://store_2019755926o6zAJs7MyxkARgX5VaU4pLGHp-Sga7668051c72f246bfd5e89402bc6517a.jpg”},

{id:2,pic:“wxfile://store_201975592354fdgshyxkARgX5VfhspLGHp-Sga7668051c72f246bfd5e89402bc65213.jpg”},

{id:3,pic:“wxfile://store_20197559235zAJs7MyxfhaU4pLGsfj-Sga7668051c72f246bfd5e89402bc6512414.jpg”}]

期中的pic的地址缓存在本地了。

②前端循环绑定该地址:

<block  wx:for="{{goods}}"

    <image src="{{item.pic}}"></image>

</block>

③我现在清除了某条数据,比如把id:1的清除掉。并且同时用setData更新了页面,然后再用wx.removeSavedFile方法移除缓存的本地图片文件。按理说,在缓存文件被移除之前,页面已经被setData方法更新了,也就是页面上该条数据不存在了,应该不会产生问题。但是,不可理解的是会产生如下错误:

Failed to load image http://wxfile.open.weixin.qq.com/store_2019755926o6zAJs7MyxkARgX5VaU4pLGHp-Sga7668051c72f246bfd5e89402bc6517a.jpg : the server responded with a status of 404 (HTTP/1.1 404 Not Found) 

From server 127.0.0.1

请各位大侠帮忙分析一下原因,谢谢了!

7 回复

回复6楼:官方说setData是异步渲染页面的,所以出现问题是有可能的,但不是必然的。你实验的没出问题,可能是因为setData先执行完后再进行的removeSavedFile的移除。但由于setData异步的不确定性,万一setData未完成,就进行了removeSavedFile的移除,这样就会出问题了。

我删除了本地缓存中的某条数据(数据中对应一张图片),然后用setData更新页面,然后再删除数据中的图片。也就是①删除数据记录②更新页面③删除页面中的图片,三个步骤顺序执行,应该不会出现问题,但是由于第②步中的setData异步渲染页面,所以可能在步③图片被删除后②未完成,导致了图片不存在的错误!

所以需要setData的异步回调。希望团队能帮助解决!!!

如果可以,不妨贴出上下文的完整的代码,

 代码在上边了啊

先删除页面的data里的一条数据,再setData更新,然后再使用removeSavedFile移除,个人试验不会出错,题主还是贴出完整代码来让大家分析吧

你好,可以贴上代码吗?

是不是setData是异步方法的原因,但是setData没有回调函数啊?怎么解决?

回到顶部