收藏
回答

变量定义域的问题?

    bqj_dayHTs.get().then(res=>{
      this.setData({
        dayHTs:res.data
      })
      // this.oper(res.data)
      console.log("~~~dayHTs1",this.data.dayHTs)
    })
    console.log("~~~dayHTs2",this.data.dayHTs)

为什么第二个变成undefined了,应该如何赋值,谢谢

回答关注问题邀请回答
收藏

2 个回答

  • 微盟
    微盟
    2020-03-18

    多了解一下 js的事件循环、宏任务、微任务的执行次序,程序执行时候,请求相当于一个promise异步执行,放入微任务队列。此时setData中的值还未设定,然后执行同步代码

    console.log("~~~dayHTs2",this.data.dayHTs) 此时为undefined,整个同步任务执行完之后,再去查看异步任务情况,然后在进行setData的处理,setData的设置分为视图渲染和js逻辑层
    
    

    这些多了解,就知道运行的结果为什么是这个样子

    2020-03-18
    有用 1
    回复 1
    • l'm
      l'm
      2020-03-18
      好的,谢谢
      2020-03-18
      回复
  • Mr.Zhao
    Mr.Zhao
    发表于移动端
    2020-03-18
    你这个问题是异步赋值问题,先打印后请求的,所以获取不到,写到then里面
    2020-03-18
    有用 1
    回复 1
    • l'm
      l'm
      2020-03-18
      好的,谢谢
      2020-03-18
      回复
登录 后发表内容
问题标签