zoukankan      html  css  js  c++  java
  • 微信小程序的同步操作

    小程序里,大多数操作都是异步操作,一些重要的操作,如从网上获取重要变量值,必须要保证有值,后续操作才有意义。但异步操作,又必须把处理放到回调中,代码可读性降低,而且和大多数正常逻辑相背。

    折腾了两天,试了一些方法,记录一下:

    1、最简单,用while循环等待,发现基本上卡死

    2、灵机一动,用showToast自带的超时功能,循环等待,也不行。因为showtoast是异步执行的。其他的showModel都是异步执行的,显示了弹窗后,代码仍然会向后执行的。

    3、网上找到,用Promise,太复杂,不想这么做

    最后,用这个方式初步解决,在用数据前,判断变量是否存在,如果没有,则显示提示,退出,并在一定时间后重新进入本函数(onShow):

        console.log("xunhuan", app.tags)
        if (app.tags.length == 0) {
          wx.showToast({
            title: '正在下载数据!',
            image: "/remind.png",
            duration: 500
          })
          console.log("jieshu", app.tags)
          setTimeout(this.onShow, 500)
          return
        }
        console.log("after", app.tags)

    但在每个地方都放这么多代码,太难看。想着在app.js里面,onShow的地方加一个,结果还是不行。因为即使在这里循环检查,但由于异步执行,代码仍然会正常执行到具体页面。看来,还得把检测代码放到具体处理中。

  • 相关阅读:
    Ubuntu18.04 一条命令安装caffe问题
    ubuntu18 + caffe+cpu+anaconda3
    ubuntu18+caffe+cuda
    opencv-python常用接口
    tensorflow-gpu安装
    【LabVIEW】如何给输入控件赋值
    【LabVIEW】控件初始化
    【LabVIEW】程序结构
    【LabVIEW】程序框图中错误输出后status如何调出
    【总线】ARINC 429总线协议
  • 原文地址:https://www.cnblogs.com/jetz/p/7728888.html
Copyright © 2011-2022 走看看