收藏
回答

小程序怎样实现同步执行?

wx.setStorageSync("userInfo", userInfo);

wx.setStorageSync("LoginInfo", result.data); //LoginInfo是后台获取的,用的是promise对象执行的request

console.log(wx.getStorageSync(LoginInfo)); //测试输出的是undefined


登录过程中,有上面一段代码,我想等第二行执行完再执行打印,该怎么实现,因为接下来想要执行wx.navigateBack到上一个页面,但是第二行代码总是在wx.navigateBack({url...})之后执行完onShow,还没缓存好LoginInfo

(另外wx.navigateBack({delta: 1})不执行上一个页面的onShow,是坑吗...)


最后一次编辑于  2020-04-25
回答关注问题邀请回答
收藏

3 个回答

  • 俞哄哄💻📷🤘🚴🎧
    俞哄哄💻📷🤘🚴🎧
    2020-04-25

    你需要让你网络请求同步或者操作逻辑在你的请求回调中执行就可以了

    同步请求可以参考下面

    若有帮助请帮忙点个"有用"谢谢↓↓

    2020-04-25
    有用 3
    回复 3
    • zjp
      zjp
      2020-04-25
      ok了,大概问题应该是小程序的js是多线程执行的,所以上图最后一句“结束请求”总是在倒数第三句代码之前执行,把最后一句放到.then里面就行了
      2020-04-25
      回复
    • zjp
      zjp
      2020-04-25
      另外,navigateBack居然又能执行onShow了....一脸懵逼
      2020-04-25
      回复
    • 俞哄哄💻📷🤘🚴🎧
      俞哄哄💻📷🤘🚴🎧
      2020-04-25回复zjp
      恩 你用了await的话不放到then里面也是可以同步执行的
      2020-04-25
      回复
  • 猛男陈阔
    猛男陈阔
    2020-04-25

    async await了解一下

    2020-04-25
    有用 1
    回复
  • 老张
    老张
    2020-04-25

    你已经是同步了。

    onShow肯定会执行,是不是有两个onShow?

    2020-04-25
    有用
    回复 2
    • zjp
      zjp
      2020-04-25
      没有,就是感觉很奇怪,看控制台,同步缓存的数据是在所有后面的代码执行完毕后才成功写完,这个明明是缓存成功才会往下执行的呀....
      2020-04-25
      回复
    • zjp
      zjp
      2020-04-25
      不知道是不是异步请求的.then里面执行wx.setStorageSync("LoginInfo", result.data);才导致它先执行了后面的代码
      2020-04-25
      回复
登录 后发表内容
问题标签