异步情况 在React事件当中是异步操作

生命周期和合成事件中

  • 无论调用多少次 setState,都会不会立即执行更新,而是将要更新的·存入 _pendingStateQueue,将要更新的组件存入 dirtyComponent
  • 当上一次更新机制执行完毕,以生命周期为例,所有组件,即最顶层组件didmount后会将批处理标志设置为 false。这时将取出dirtyComponent中的组件以及 _pendingStateQueue中的 state进行更新。这样就可以确保组件不会被重新渲染多次。
  • setState本身并不是异步的,而是 React的批处理机制给人一种异步的假象。

同步情况

如果是在setTimeout事件或者自定义的dom事件中,都是同步的

setTimeout(()=>{this.setState({count: this.state.count + 1});console.log(3,this.state.count);//3
})
new Promise<void>(resolve=>{this.setState({count: this.state.count + 1});resolve()console.log(0,this.state.count);//0
}).then(()=>{this.setState({count: this.state.count + 1});console.log(2,this.state.count);//2
})
document.querySelector('#btn').addEventListener('click',()=>{this.setState({count: this.state.count + 1});console.log(this.state.count);
});

setState是同步的还是异步的(都有)相关推荐

  1. [react] react中的setState是同步还是异步的呢?为什么state并不一定会同步更新?

    [react] react中的setState是同步还是异步的呢?为什么state并不一定会同步更新? 由React控制的事件处理程序,以及生命周期函数调用setState不会同步更新state . ...

  2. SweetAlert swal 是同步的还是异步的

    SweetAlert swal 是同步的还是异步的 本人在写关于swal的代码时,发现数据以外的为空, 跟进代码发现,swal代码并没有执行完,程序就执行了下一行js代码, 故猜测swal可能为异步操 ...

  3. setstate是同步还是异步_【vert.x准备篇1】同步和异步,阻塞和非阻塞概念澄清

    为了能更好的理解vert.x的线程模型,我们必须要先明确几个概念:同步(Synchronous)和异步(Asynchronous),阻塞(Blocking)和非阻塞(Non-Blocking).关于这 ...

  4. setstate是同步还是异步_谈谈 IO模型:同步、异步、阻塞、非阻塞

    同步/异步.阻塞/非阻塞 说的是一回事儿吗? 同步/异步.阻塞/非阻塞 你能通俗易懂的讲清楚吗? Java 中的 BIO.NIO.AIO 你了解吗? Socket 编程你还会吗? Linux 操作系统 ...

  5. 如何让jQuery执行同步而不是异步的Ajax请求?

    我有一个提供标准扩展点的JavaScript小部件. 其中之一是beforecreate函数. 它应该返回false以防止创建项目. 我已经使用jQuery在此函数中添加了Ajax调用: before ...

  6. 企业网盘的映射盘、同步盘、虚拟盘 都是些什么?

    企业网盘有很多概念和功能让用户混淆,特别是映射盘.同步盘.虚拟盘.不少用户分不清其中的差异和使用方法,所以也造成无法判断.所以今天就来谈谈这三者的差异,并且也帮助用户做一个鉴别. 先说映射盘,现在很多 ...

  7. 为什么同步的StringBuffer从来都不是一个好主意

    介绍 StringBuffer是用于可变字符串的同步类. 使其同步的主要问题是 它通常用作局部变量,因此使其同步只会使其变慢. 以多线程方式使用它从来不是一个好主意. 这个问题是开发人员认为使用Str ...

  8. Signal和Slot是同步的还是异步的

    signal和slot是异步调用还是同步调用,取决于对connect的设定.其实connect还有一个参数(Qt::ConnectionType),是它决定了是同步还是异步.以下是Connection ...

  9. 人人都能读懂的react源码解析(大厂高薪必备)

    人人都能读懂的react源码解析(大厂高薪必备) 1.开篇(听说你还在艰难的啃react源码) ​ 本教程目标是打造一门严谨(严格遵循react17核心思想).通俗易懂(提供大量流程图解,结合demo ...

最新文章

  1. 计算机音乐作曲排名2019,2019金曲排行榜_2019《全球华人歌曲排行榜》年度五强名单公布...
  2. TypeScript中的枚举类型
  3. 高并发,高性能的一点调研
  4. vue移动端过渡动画_Vue.js实现微信过渡动画左右切换效果
  5. 五、队列(Queue)
  6. loadrunner脚本运行时设置:Run Logic设置运行次数
  7. coreldraw水涟漪怎么做_曹晓岚:水公园的主题文化营销怎么做?
  8. Fedora 17 install VMWare tool
  9. 数学--数论--原根(循环群生成元)
  10. crc16的c语言函数 计算ccitt_C语言为何如此重要
  11. spring框架_Spring框架
  12. 本地Git仓库关联多个远程仓库的两种方法
  13. 个人 易混淆 高频 高级单词
  14. 天气实况、天气预报、免费天气接口、空气质量各类天气数据、生活指数、气候数据雷达云图等值面...
  15. Python 正则表达式匹配中文
  16. 幂运算的O(lgn)算法
  17. 用spark统计50年美国最常见的20个名字
  18. 一天、一个月、一年时间戳分别是多少?
  19. bp是什么意思贷款利率,利率上bp是什么意思
  20. 给笔记本电脑外接显示器增加副屏

热门文章

  1. SpringBoot 2.0 集成 JavaMail ,实现异步发送邮件
  2. Django contenttypes 应用
  3. [BJOI2019]送别——非旋转treap
  4. 【网络编程】——windows socket 编程
  5. web前端安全编码(模版篇)
  6. html 新浪博客,html
  7. new失败跟踪函数_关于针对class自定义new操作符失败的函数处理
  8. oracle 10g rac 包root.sh报错,案例:Oracle Rac root.sh报错 Failed to create keys in the OLR
  9. java jdk安装教程win10_win10系统安装java的详细步骤(图文)
  10. 信息学奥赛一本通 1083:计算星期几 | OpenJudge NOI 小学奥数 7831