官方文档可以知道
setData函数改变Page的data是同步的,会异步通知视图层data的改变,视图层收到通知后进行渲染。即官方文档里生命周期的Send Data箭头(下图)
callback分析
先上代码:
Page({
data: {
theData: 1
},
onLoad: function(options) {
console.log("data begin:" + this.data.theData);
this.setData({
theData: 2
}, () => {
console.log("callback");
});
console.log("data after:" + this.data.theData);
/*长耗时*/
for (var i = 0; i < 1000000; i++) {
for (var j = 0; j < 2000; j++) {
j++;
}
}
console.log("data long after:" + this.data.theData);
}
})
结果:
结论:
1、callback回调函数并不是视图层渲染成功后的回调,而是Page的data改变完成就执行callback。
2、从long after会比callback早打印可知,setData实际上是一个异步代码段(js单线程概念先理解好),只有for和long after打印后,console.log(“callback”);才会执行