收藏
回答

如何解决cacheManager.match()匹配数据缺失问题?

使用弱网优化api的wx.createCacheManager匹配上规则后没有缓存数据。调用cacheManager.match()匹配上后只返回了ruleId和maxAge,没有data、cacheId和createTime,
我不理解是我没缓存到数据 还是 缓存到了只是拿到数据,请帮我看看

 // 创建缓存管理器
        const cacheManager = wx.createCacheManager({
            mode: 'always'
        })


        // 添加请求规则
        cacheManager.addRule(/https:\/\/(?:.*)/ig) // 表示所有 https 请求都匹配


        // 监听符合规则的 wx.request 请求,默认在弱网时调用 wx.request 即会触发
        cacheManager.on('request', evt => {
            console.log("networkCache 1 ===>", evt)
            return new Promise((resolve, reject) => {
                // 匹配是否存在缓存
                const matchRes = cacheManager.match(evt)


                console.log("networkCache 2 ===>", matchRes)
                
                if (matchRes && matchRes.data) {
                    // 使用缓存返回
                    resolve(matchRes.data)
                } else {
                    // 没有匹配到缓存
                    reject({ errMsg: `catch not found: ${evt.url}` })
                }
            })
        })
回答关注问题邀请回答
收藏

3 个回答

  • 社区技术运营专员--许涛
    社区技术运营专员--许涛
    2023-06-19

    你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)

    2023-06-19
    有用
    回复
  • 龙夫
    龙夫
    2023-09-27

    解决了吗,同样的问题

    2023-09-27
    有用
    回复
  • 一二三
    一二三
    2023-08-04

    你的模式是always,证明缓存管理器将请求拦截了,你从来没有请求过接口,所以缓存管理器里面的值也是空的,这个时候你去拿缓存管理器的值是拿不到的,我是这样理解的

    2023-08-04
    有用
    回复
登录 后发表内容