缓存取值求解
发布于 6 年前 作者 guiying48 19753 次浏览 来自 问答

无缓存时 app.js异步缓存信息

    index.js onload是setData({data:wx.get同步缓存})

    有时拿不到缓存的数据因为还没缓存好 我加了一个判断 再setTimeout() 一段时间后重新setData()

有缓存时 正常

对于清除缓存 重新编译时 除了setTimeout()这个方法 有没有更好的解决方案

4 回复

这问题见过好多好多遍了。。

app.js

onLaunch:function(){

    wx.request({

        success: res=>{

            wx.setStorage({

                key:‘xxx’,

                value:res.xxxxx

            })

            typeof(this.callBack) && this.callBack(res.xxxxx)

        }

    })

}

page.js

const app = getApp()

onLoad: function(){

    wx.getStorage({

        key:‘xxx’,

        success: res=>{

            this.deal(res)

        },

        fail: ()=>{

            app.callBack = this.deal

        }

    })

}

网络请求使用Promise进行封装,然后App上实现一个预取接口数据的存储Map,再加上一个事件通知方法,这样在Page上就能根据有无数据,与通知刷新方式进行接口数据的及时更新。

可以看下这个:https://juejin.im/post/5bc70e275188255c5f541da1#heading-20

如果app.js中数据还没有加载完成,那么这个页面急着用可以再调接口去取数据啊等待数据返回后再执行后面的操作。

我感觉还是setTimeout 靠谱

回到顶部