收藏
回答

wx.config成功或失败都会执行wx.ready?

经过测试,得出结果,wx.config失败会执行wx.ready和wx.error,而且还是先执行wx.ready、后执行wx.error。

wx.config成功则只会执行wx.ready。

因为现在需要在wx.error时处理一些特有逻辑,如刷新签名等,但是发现wx.ready也会正常执行,这是bug吗?

比如页面一加载时获取定位,一般是怎么写?如果签名失效导致config失败wx.ready也会执行,如果在error时刷新签名再重新config,这样第二次成功了,但是ready相当于执行了两次了。怎么解决这个问题?

回答关注问题邀请回答
收藏

2 个回答

  • 社区技术运营专员--许涛
    社区技术运营专员--许涛
    2023-09-03

    2023-09-03
    有用
    回复
  • Young nbe
    Young nbe
    2023-09-03

    微信小程序中的 wx.config 接口在成功和失败时执行不同的回调函数。根据您的描述,wx.config 失败时会先执行 wx.ready,然后执行 wx.error。这是微信小程序的设计,不是 bug。

    对于您提到的问题,如果在 wx.error 时需要处理一些特有逻辑,例如刷新签名,您可以在 wx.error 的回调函数中进行处理。这样,只有在 wx.config 失败时,才会执行这些逻辑。

    关于页面加载时获取定位的问题,您可以在页面加载时调用 wx.getLocation 接口来获取当前位置的坐标信息。以下是一个示例代码:

    // 在页面加载时获取当前位置
    
    Page({
    
      onLoad: function () {
    
        wx.getLocation({
    
          success: function (res) {
    
            console.log(res);
    
            // 处理获取到的位置信息
    
          },
    
          fail: function () {
    
            console.log('获取位置信息失败');
    
          }
    
        });
    
      }
    
    });
    
    
    
    

    如果您在 wx.error 中刷新签名并重新调用 wx.config,确保在刷新签名后再次调用 wx.config 之前,先取消对 wx.ready 的调用,以防止 wx.ready 重复执行。例如:

    // 在 wx.error 的回调函数中刷新签名并重新配置
    
    wx.error(function (res) {
    
      // 刷新签名并重新配置
    
      refreshSignatureAndConfig();
    
    });
    
    
    
    
    function refreshSignatureAndConfig() {
    
      // 刷新签名的逻辑
    
      // ...
    
      
    
      // 重新配置的逻辑
    
      wx.config({
    
        // ...
    
      });
    
      
    
      // 在刷新签名并重新配置完成后,取消对 wx.ready 的调用
    
      if (typeof wx.ready === 'function') {
    
        wx.ready = null;
    
      }
    
    }
    


    这样,只有在刷新签名并重新配置完成后,才会执行 wx.ready。宠物百科


    2023-09-03
    有用
    回复 1
    • 南极
      南极
      2023-09-03
      失败时先执行wx.ready,到wx.error时已经wx.ready都已经执行完了
      2023-09-03
      回复
登录 后发表内容