问题:

背景:
当getUserIng === true时,页面渲染;
预期结果:window.test('id', 'res.user') => setState
结果:setState => window.test('id', 'res.user')
即:某组件中调用test.id时,test.id为空,若setState是异步的,不应该出现此状态~
推断1:
- setState可能是极快的异步,
结果:
貌似是应验了~~
- 验证:如果setState time 是同步的,那么


由此可是上述推断是错误的,应该是promise的问题;
推断2
- promise的问题 下面再来一题:猜想结果



那么,setState是同步的吗?是批量render的吗?确切是为什么呢?
原因
推荐一篇文章, Batch Update
react 中实现batch update

vue 中
推荐文章:Vue异步更新队列原理从入门到放弃
放一张个人理解图,如果错误,望指出

拓展:
问题1:(tick代表微任务)
- this.a = 1;
- tick(this.b = 2)
- tick(this.c = 3) 问:render几次?
问题2:
- tick(this.aa = 1)
- tick(this.bb = 2) 问: render几次?
答案分别是:2, 1