我一直以为, 现在很难遇到什么奇怪的情况了(但从小程序这块来说)。

没曾想,今天又让我遇见一回。

tips:真的是翻来覆去的看,一直到问题解决,还是不太清楚异常的原因。

场景是这样的,最近在做活动,流量可能比较大,然后就在检查相关功能页面的性能,突然发现小程序如果网络切换的时候重新进的话(比如开飞行再切回4G), network里请求的接口就会pending住。

一开始以为是接口问题, 但是后端查了一下日志,发现什么都没有进去

再去看了一下别的小程序,随便看了几个,都没有这样的情况

整个人当时直接是就慌掉了。

又是断点又是真机找了半天原因, 发现了一个奇怪的地方

先讲一下我们的机制, 就很常规的,用户进来要先拿wx.login的code从我们自己的login接口里换用户信息什么的,拿到了之后别的接口才会调。

那个异常就是发生在上面👆划线的过程中

如果是常规进入的话,无论场景是什么, 整个取数据的流程都没有问题

唯独是断网再重连的情况下 在wx.login回调里的接口就会卡住(几番尝试发现和接口自身没有任何关系,换了很多不同的接口,包括域名/协议,最后甚至拿百度搜索引擎里随便拿个接口都一样会pending)

翻来覆去改代码发现就是这里的问题

看到这我感觉这可能是开发者解决不了的异常了, 可能是wx.login在弱网状态下和微信那边的通信触发了什么诡异的东西。

那么为什么别的小程序复现不出来这个问题呢?

想了差不多半个小时,我发现了一个不正常的地方。

常规的登录流程是不会每次打开小程序都去刷wx.login的 一般是把token之类的存到storage里, 在请求里封装token过期的刷新处理。

然后现在这个小程序是每次进来都会重新刷一遍token,

我把机制改成上面常规的之后,这个问题就没有了。

所以到底还是没有查粗来具体问题是什么。 ---- 先这样,能跑就行。