收藏
回答

在 app.js 中用 async await将异步请求改同步出现的异常问题?

app.js部分代码如下:

async onLaunch(res) {
      console.log("我是APP.js  onLaunch")
      const v = await this.request();
      console.log("我是APP.js  onLaunch的同步请求",v)
},
request() {
      return new Promise((resolve, reject) => {
          wx.request({
              url: '这是一个正常URL', // 请不要纠结这个
              success(res) {
                  resolve(res)
              },
              fail(err) {
                  console.log(err)
                  resolve(err)
              }
          })
      })
},


首页js部分代如下:

onLoad: function (options) {
    console.log('我是首页的onLoad')
}


执行结果如下:


虽然在app.js onlaunch 中执行 async await 改的异步请求变同步了,但是跟其他的函数相比却好像是异步的???为什么会出现这样的问题?

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

2 个回答

  • Wang
    Wang
    2020-01-11
    async的含义是关键
    


    2020-01-11
    有用 1
    回复 5
    • 对方正在输入
      对方正在输入
      2020-01-11
      大佬请明示。加上了async 的 app.js onLaunch还是第一个执行了的呀
      2020-01-11
      回复
    • Wang
      Wang
      2020-01-11回复对方正在输入
      无论加与不加,肯定都是第一个调用onLaunch,这是定义好的执行顺序,无论如何都无法改变。而你疑惑的点在于为什么没有等待await执行完毕就执行了onShow等等函数。其实你自己写一个async,await函数调用一下就明白了了。比如:图片中的代码的log输出顺序是什么。
      2020-01-11
      1
      回复
    • 对方正在输入
      对方正在输入
      2020-01-11回复Wang
      额,那我如果想在app.js里请求完成后,再执行其他的,该如何写呢?你有什么办法可以实现嘛?
      2020-01-11
      回复
    • Wang
      Wang
      2020-01-14回复对方正在输入
      在小程序创建的时候开发者工具中可以生成一个快速开发模板,里面有关于获取用户信息而写的防止加载时间过长而无法正确执行后续程序的方法,可以看一下
      2020-01-14
      1
      回复
    • 对方正在输入
      对方正在输入
      2020-01-14回复Wang
      好的,十分感谢你的解惑,谢谢你
      2020-01-14
      回复
  • 半城
    半城
    2020-01-11

    我也有这个问题有大佬有具体的解决方案吗


    2020-01-11
    有用
    回复
登录 后发表内容
问题标签