收藏
回答

this.setData是异步还是同步?

问题模块
API和组件


this.setData是异步执行还是同步执行的? 我调用this.setData设置的数据能立刻获取到吗?


this.setData({

   name: 'abc'

});


console.log(this.data.name) //刚才设置的 name 能立刻获取到吗?


ps: 微信小程序的 ide, 有的版本能立刻取出最新的数据, 而有的版本不能保证取出的数据是最新的,有点困惑了

最后一次编辑于  2017-01-16  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

3 个回答

  • 韬々
    韬々
    2017-01-16

    setData操作是同步的,能马上获取刚刚设置的属性;但是页面渲染则是异步进行的


    LZ的问题能详细描述一下发生的场景么?最好能提供一个能够复现错误的示例~

    2017-01-16
    赞同
    回复 1
    • 满心欢喜💗
      满心欢喜💗
      08-29
      用async await 设置this.setData 能变成同步吗
      08-29
      回复
  • 陈德行
    陈德行
    2017-01-22

    我现在遇到一个很奇怪的问题,在IDE上渲染时同步的,在手机上测试是异步的..真的有点晕了。。。

    2017-01-22
    赞同
    回复
  • 小呈
    小呈
    2017-01-16

    微信小程序的 ide 刚刚出来时, 就开始使用了, 当时遇到的问题是, setData 设置的数据如果被立刻获取则不能保证是最新的值, 当时也没找到 setData 的回调函数, 就把需要同步保存和获取的数据存在this上了;


    而后来 ide 更新了一个版本, 发现 setData 设置的数据又能立刻被获取了, 于是我删掉了之前的持久化方式;


    后来, ide 又更新了一个版本, 发现 setData 设置的数据又不能保证被立刻取出了, 晕死, 我只好创建了一个对象专门保存同步数据;


    现在微信 ide 是最新版了, 突然发现 setData 的表现又是同步的了;


    我不知道 setData 到底是同步的还是异步的, 是和 react 一样, 设置的数据并不能保证被立刻取出, 还是 setData 设置的数据一定能立刻取出, 之前出现不一定能立刻取出的现象是 bug ?


    2017-01-16
    赞同
    回复