美文网首页
发生在支付宝小程序中的一个bug

发生在支付宝小程序中的一个bug

作者: Kris_lee | 来源:发表于2018-03-21 10:30 被阅读20次

发生在支付宝小程序中的一个bug

这段时间,开发支付宝小程序,遇到一个只会发生在ios系统上的问题。

问题

page页:等待页面 (轮调接口查询结果) 成功跳转到支付成功页面。

当把小程序隐藏,例如,关闭屏幕,之后再进入

问题来了,在支付成功页面 会不断 轮调 之前等待页面 的接口。

即便退出小程序,依旧会在支付宝后台轮调。

考虑的原因

  • 定时器关闭的问题。
  • app.js的onShow 拿到了轮调的方法。

定时器。

  • 检查了定时器。从局部的定义的timer 。设置成全局的timer ,并在页面卸载的时候,clearInterval 。 问题依旧会重现。
  • 将定时器设置成globalData。之后在页面卸载的时候清除,并在支付成功页面 onLoad方法里卸载。问题依旧会重现

排除了定时器的问题,那么就是app.js的onShow问题了。

app.js的onShow方法

  onShow() {
    let that = this;

    that.getStorageInfo();

    app.globalData.waitingcardtimer = setInterval(()=>{
      that.getPayResult()
    },3000)
  },

将onShow的代码清空,方法写在 onLoad()里。

  onLoad() {
    let that = this;

    that.getStorageInfo();

    app.globalData.waitingcardtimer = setInterval(()=>{
      that.getPayResult()
    },3000)
  },

问题可能产生的原因,我估计是因为,小程序在判断哪个onShow 的时候有自己的标识,但是在定时器的影响下。由于小程序退出后台,定时器还在执行。这时候,小程序的onShow默认这个方法是自己的方法。这时候。拿到了轮调的方法。从而去操作。

具体的原因我还没有深入考究。如果有知道的大神,希望能告知。

相关文章

网友评论

      本文标题:发生在支付宝小程序中的一个bug

      本文链接:https://www.haomeiwen.com/subject/shbhdxtx.html