微信小程序的同步操作

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏贺贺的前端工程师之路

React中的Redux

整个应用的state被存储在一棵object tree中,并且这个object tree只存在于唯一一个store中。

1092
来自专栏V站

六个有用的 PHP 片段或技巧

网上有很多 PHP 代码片段可以提高开发效率,也可以学习一下其中的技巧而应用在自己的项目中,下面就精选了几个比较有用的 PHP 片段。

2172
来自专栏知晓程序

开发 | 小程序开发有哪些坑?这份笔记都整理出来了

2113
来自专栏技术博文

可编辑DIV设置光标位置

平时我们使用文本框input, textarea时,我们有时候需要得到光标的位置或者说设置光标的位置. 但是文本框有个不足,就是不能满足我们插入图片或者其他的一...

3834
来自专栏我是业余自学C/C++的

python3网络爬虫(抓取文字信息)

1.3K4
来自专栏Golang语言社区

Golang语言社区--golang 进度下载文件

大家好,我是Golang社区主编彬哥,本篇给大家转载一篇关于文件下载相关的文章。

5016
来自专栏ShaoYL

Git在Xcode中的配置与使用常见问题总结

42411
来自专栏偏前端工程师的驿站

CMD魔法堂:支持显示UTF8编码的中文

一、前言                                     在Unbuntu中用sqlite3-command-line操作sqlite3...

21610
来自专栏小狼的世界

封装内容和功能 – YUI TabView使用小记

本文主要内容取自 Caridy Patino 在2008年发布的文章,原文中使用的是YUI2,笔者对例子做了一些更新,均使用了YUI3.1.1,文章中讨论的这个...

982
来自专栏前端布道

JavaScript之Event Loop

先看段代码: console.log(1); setTimeout(function () { console.log(2); new Pr...

30412

扫码关注云+社区

领取腾讯云代金券