经过测试,得出结果,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相当于执行了两次了。怎么解决这个问题?
微信小程序中的 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。宠物百科