this.setData是异步还是同步?
发布于 6 年前 作者 weidong 8940 次浏览 来自 问答

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

this.setData({

   name: ‘abc’

});

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

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

3 回复

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

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

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

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

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

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

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

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

回到顶部