问题:由于微信端领取到卡包本事是一个异步操作,因为你不确定用户进入微信领卡页面后是何时点击的领卡,只能等微信推送的success事件,这个时候我要再请求后端,获取该卡的详情用于展示,此步骤在ios端不存在问题,因为用户如果不点击左上角的返回按钮,success事件是不执行的,而安卓端则不同,只要用户点击了领卡,success会立即执行,这就造成了保存卡面信息和读取卡面信息两个接口起了冲突,由于网络原因。通常会造成读取不出来任何信息(因为此时保存的接口还没执行完)。
解决:针对该问题,我们提出了两种解决方案,第一种使用长链接websocket来请求读取卡面信息的接口,不过此方法和使用定时函数频繁请求的做法差不了太多,所以没有采用,第二种是后端进行加锁操作,如果是读取的先进来,将其锁住,在短时间内停止操作,在该段时间里如果收到同一id的保存接口,则开始执行保存,保存完毕释放读取接口,返回信息。