美文网首页
微信小程序 同步转异步处理

微信小程序 同步转异步处理

作者: AKyS佐毅 | 来源:发表于2018-12-24 15:55 被阅读37次

    最近在开发商城小程序中,由于将权限校验都放在了app.js中,然后就有时出现无法获取扫码加载的第一个界面

    小程序提供了getCurrentPages()函数获取页面栈,第一个元素为首页,最后一个元素为当前页面。

      var pages = getCurrentPages()
      var currentPage = pages[pages.length - 1] //获取当前页面的对象
    

    此时会返回为空。为此,考虑了三种方法。

    • 延迟加载setTimeOut.但是在网络比较差的时候,可能还是获取不到。

    • 使用定时器 :这种情况下,需要注意 一定要将定时器关闭

     var i = setInterval(function () {
            var pages = getCurrentPages()
            var currentPage = pages[pages.length - 1] //获取当前页面的对象
            if (!isEmpty(currentPage)) {
              clearInterval(i);
              wx.setStorageSync('authBeforePage', {
                route: currentPage.route,
                options: currentPage.options
              });
              if (currentPage.route !== "pages/mainTree/mainTree") {
                wx.redirectTo({
                  url: "/pages/mainTree/mainTree"
                });
              }
            } else {
              wx.redirectTo({
                url: "/pages/mainTree/mainTree"
              });
            }
          }, 300) //循环间隔 单位ms
    
    • 异步消息
    const worker = wx.createWorker('workers/request/index.js') // 文件名指定 worker 的入口文件路径,绝对路径
    
    worker.onMessage(function (res) {
      console.log(res)
    })
    
    worker.postMessage({
      msg: 'hello worker'
    })
    
    worker.terminate()
    

    需要注意的是,worker.terminate(),仅限主线程 worker 对象上调用。

    相关文章

      网友评论

          本文标题:微信小程序 同步转异步处理

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