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的地方加一个,结果还是不行。因为即使在这里循环检查,但由于异步执行,代码仍然会正常执行到具体页面。看来,还得把检测代码放到具体处理中。

  • 相关阅读:
    STM32学习中出现的错误
    原码 反码 补码 移码
    LiauidCrystal
    gpio 的配置
    ARM7探究
    导轨控制问题
    A4988驱动42步进电机
    arduino驱动oled
    计算机组成原理
    arduino basic issue
  • 原文地址:https://www.cnblogs.com/jetz/p/7728888.html
Copyright © 2011-2022 走看看