当前位置: 首页 > news >正文

太原建站公司有哪些大连企业网站建设公司

太原建站公司有哪些,大连企业网站建设公司,小说网站自动采集,河南阿里巴巴网站建设目录 现象分析原因 浏览器中Js是单线程的#xff0c;当然不可能出现线程安全问题。只是遇到的问题的现象与多线程的情况十分相似#xff0c;导致对不了解Vue实现的我怀疑起了人生… 现象 项目中用到了element-plus中的加载组件#xff0c;简单封装了一下#xff0c;用来保… 目录 现象分析原因 浏览器中Js是单线程的当然不可能出现线程安全问题。只是遇到的问题的现象与多线程的情况十分相似导致对不了解Vue实现的我怀疑起了人生… 现象 项目中用到了element-plus中的加载组件简单封装了一下用来保证只会出现一个加载框大概是这样 import { ElLoading } from element-pluslet instance let count 0 export function startLoading() {if (count 0) {// 临界区instance ElLoading.service()}count } export function stopLoading() {count--if (count 0) {instance.close()} }使用的时候意外的出现了多个实例但是只保存了最后创建的实例导致界面上有个loading无法关闭。 复现Demo 分析 打断点调试发现到instance ElLoading.service()之后没有继续往下count而是再次去到if (count 0)由于还没有所以count还是0进入if重复创建了loading实例。 这个现象乍一看和有两条线程同时进入了startLoading的情况一模一样。不过我发现后面count的值是没错的所以把count提到前面改成这样问题没有再复现。 export function startLoading() {countif (count 1) {instance ElLoading.service()} }如果存在线程安全那么count如果不是原子操作的话同样的问题还是会出现的。查了一圈资料没有找到相关信息。 最终是在打断点的时候看了一眼调用堆栈发现第二次的startLoading是在第一次的Loading组件mount的时候调用的。也就是说两次调用是串行的嵌套关系而不是并行直接松了一口气 原因 问题的关键在于Vue的watch实现第二次的startLoading是在watch中调用的。watch的数据变化事件会被Vue放到队列中在mount组件时会先处理这个队列所以在mount第一个Loading组件时执行了第二个startLoading 关键方法是flushPreFlushCbs具体之后再学习学习
http://www.hkea.cn/news/14450368/

相关文章:

  • 微商城网站建设咨询聚合影视网站建设
  • 天津网站建设制作开发公司北京网络公司注册
  • 积极推进在线网站建设如何用网站做课件
  • 网站怎么做留言提交功能wordpress cosy主题破解
  • 用html是做班级简介网站怎么做网站首页关键词
  • 海珠电子商务网站建设网站改版完成
  • 手机网站模板 html网站开发工作进展情况
  • 怎么做垂直门户网站wordpress修改登录地址
  • 购物网站模板html500万网官网
  • 图跃网站建设如何建设手机网站首页
  • 驻马店手机网站制作免费的网站
  • 哪些公司需要做网站wordpress远程图片发布模块
  • 网站建设 中山网站建设工作量统计表
  • 上海松江网站建设公司开创者wordpress素材
  • 个人做外贸商城网站宠物网站制作内容
  • 四川住房与城乡建设部网站人工智能写作网站
  • 大连金豆网站建设江门网站优化经验
  • 大讲堂123专注网站模板制作七牛云如何做网站缓存
  • 淘宝客手机网站怎么做网页设计图片间距代码
  • 做变形字的网站软件ui设计是什么
  • 环保部网站建设项目重大变动国内最新新闻摘抄
  • wordpress百万并发莆田seo接单
  • 邢台八方网络科技有限公司seo服务工程
  • 官方网站 优帮云响应式网站建设有哪些好处
  • 河北企业网站制作下载一个网站的源码下载
  • 做公司网站有什么好处公众号文章排版编辑器
  • 深圳建设一个网站制作公司合肥国际网站建设正规平台
  • 浙江中联建设集团有限公司网站最新电视剧免费观看网址
  • 学校ftp服务器做网站怎么注册app软件
  • 汕头房产网站建设ui设计做网站