收藏
回答

onLaunch里面调用接口返回的数据,第一次进入小程序时在utils里面获取不到?

// 在onlaunch里面将数据存到本地
 onLaunchfunction() {
    wx.request({
          url: config.rootUrl + '/system/getSystemInitConfig',
          method:'get',
          header:{
            'content-type''application/json' 
          },
          successres =>{
            console.log(res);
            wx.setStorageSync('vmpTencent', res.data.data.vmpTencent)
            
          }
        })
  }
//在utils.js里面获取
export const config = {
  tenantCode: wx.getStorageSync('vmpTencent'),
}

//第一次进入小程序获取不到重新进入小程序才能获取到
回答关注问题邀请回答
收藏

4 个回答

  • 跨商通
    跨商通
    2023-11-09

    js异步,了解一下先。

    2023-11-09
    有用 1
    回复 1
    • Don't know
      Don't know
      2023-11-09
      那怎么解决呢
      2023-11-09
      回复
  • 一笑皆春
    一笑皆春
    2023-11-09

    可能第一次接口没请求通,或者是请求是异步的,你util获取的时候,接口还没返回数据

    2023-11-09
    有用 1
    回复 3
    • Don't know
      Don't know
      2023-11-09
      怎么解决呢
      2023-11-09
      回复
    • 一笑皆春
      一笑皆春
      2023-11-09回复Don't know
      你获取的时候慢一点就是了,或者加个延迟
      2023-11-09
      回复
    • Don't know
      Don't know
      2023-11-09
      我之前试过,不太行
      2023-11-09
      回复
  • 天下太平
    天下太平
    2023-11-10
    搞一个中转启动页,onLaunch访问接口获取到响应后跳转到对应的页面再拿数据
    
    2023-11-10
    有用
    回复
  • optimistic
    optimistic
    2023-11-09

    可以这么写

    function getVmpTencent() {
      return new Promise((resolve, reject) => {
        const data = wx.gtStorageSync('vmpTencent');
        if (data) {
          resolve(data);
          return;
        }
        wx.request({
          url: config.rootUrl + '/system/getSystemInitConfig',
          method: 'get',
          header: {
            'content-type': 'application/json',
          },
          success: (res) => {
            console.log(res);
            const { vmpTencent } = res.data.data;
            wx.setStorageSync('vmpTencent', vmpTencent);
            resolve(vmpTencent);
          },
          fail: reject,
        });
      });
    }
    
    
    const vmpTencent = await getVmpTencent();
    
    2023-11-09
    有用
    回复 4
    • Don't know
      Don't know
      2023-11-09
      这样是不行的,获取的是一个promise对象,没有获取promise返回的值
      2023-11-09
      回复
    • optimistic
      optimistic
      2023-11-09回复Don't know
      所以 await 啊,写在异步函数就行
      2023-11-09
      回复
    • optimistic
      optimistic
      2023-11-09回复Don't know
      至于怎么获取promise的值,由你自己决定或者await  或者then
      2023-11-09
      回复
    • Don't know
      Don't know
      2023-11-10回复optimistic
      await 也获取不了
      2023-11-10
      回复
登录 后发表内容