前端dom操作竟然使得http请求的时间延长了
最近在项目中遇到了一个奇怪的问题:在google浏览器的调试窗口network下看到一个请求的时间一直是2s多,但是当我把这个请求单独拿出来执行的时候发现根本用不了2s,100多毫秒就完成了。最后再不断的调试下发现我在发送该请求(称为A)的同时发送了另一个请求(称为B),B请求因为其查询的数据少所以请求很快就回来了,B请求的回调先于A请求的回调执行。虽然B请求查询的数据少,但是其回调函数中进行了大量的dom操作(多达2s的时间),一直占用着js线程。导致A请求其实已经回来数据了,但是回调函数一直执行不了,最终导致A请求的时长达到了2s的假象。
该问题透露着几个至关重要的知识点:1.js是单线程执行的。2.异步。3.事件循环
这里都是js引擎执行机制的东西,之前一直懵懵懂懂的。下篇博客再总结下!
前端dom操作竟然使得http请求的时间延长了的更多相关文章
- 6、前端--DOM操作(查找标签、节点操作、获取值操作、class操作、样式操作、绑定事件、内置参数this)
DOM操作之查找标签 前缀关键字>>>:document # 基本查找(核心) document.getElementById 根据ID获取一个标签 document.getElem ...
- 从DOM操作看Vue&React的前端组件化,顺带补齐React的demo
前言 接上文:谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo 上次写完博客后,有朋友反应第一内容有点深,看着迷迷糊糊:第二是感觉没什么使用场景,太过业务化,还不如直接写Vue ...
- 前端页面卡顿?或是DOM操作惹的祸,需优化代码
文档对象模型(DOM)是一个独立 于特定语言的应用程序接口.在浏览器中,DOM接口是以JavaScript语言实现的,通过JavaScript来操作浏览器页面中的元素,这使得 DOM成为了JavaSc ...
- Web前端开发最佳实践(13):前端页面卡顿?可能是DOM操作惹的祸,你需要优化代码
文档对象模型(DOM)是一个独立于特定语言的应用程序接口.在浏览器中,DOM接口是以JavaScript语言实现的,通过JavaScript来操作浏览器页面中的元素,这使得DOM成为了JavaScri ...
- 前端性能优化--为什么DOM操作慢? 浅谈DOM的操作以及性能优化问题-重绘重排 为什么要减少DOM操作 为什么要减少操作DOM
前端性能优化--为什么DOM操作慢? 作为一个前端,不能不考虑性能问题.对于大多数前端来说,性能优化的方法可能包括以下这些: 减少HTTP请求(合并css.js,雪碧图/base64图片) 压缩( ...
- 前端JavaScript(3)-关于DOM操作的相关案例,JS中的面向对象、定时器、BOM、位置信息
小例子: 京东购物车 京东购物车效果: 实现原理: 用2个盒子,就可以完整效果. 先让上面的小盒子向下移动1px,此时就出现了压盖效果.小盒子设置z-index压盖大盒子,将小盒子的下边框去掉,就可以 ...
- 前端页面卡顿、也许是DOM操作惹的祸?
界面上UI的更改都是通过DOM操作实现的,并不是通过传统的刷新页面实现 的.尽管DOM提供了丰富接口供外部调用,但DOM操作的代价很高,页面前端代码的性能瓶颈也大多集中在DOM操作上,所以前端性能优化 ...
- 前端最佳实践——DOM操作
1.浏览器渲染原理 在讲DOM操作的最佳性能实践之前,先介绍下浏览器的基本渲染原理. 分为以下四个步骤: 解析HTML(HTML Parser) 构建DOM树(DOM Tree) 渲染树构建(Rend ...
- 前端javascript之BOM、DOM操作、事件
BOM与DOM操作 BOM 浏览器对象模型>>>:使用js操作浏览器 DOM 文档对象模型>>>:使用js操作前端页面 window对象 所有浏览器都支持 wind ...
随机推荐
- python与图灵机器人交互(ITCHAT版本)
#!/usr/bin/env python#-*- coding:utf-8 -*- @Author : wujf @Time:2018/9/5 17:42import requestsimport ...
- C#通过SendMessage发送消息,改变其他程序的下拉框控件(ComboBox)的值
IntPtr cbh= new IntPtr(handle); //ComboBox的句柄 SendMessage(cbh, 0x014D, new IntPtr(-1), "需要选中的下拉 ...
- MyEclipse 2014 有用的几个快捷键
ctrl+h fileSearch ------------------------------------- MyEclipse 快捷键1(CTRL) ---------------------- ...
- centos 如何执行.bin 文件??
默认下载,或者上传到 linux 上的 .bin 文件都是白色的,不能被执行. 想要用 ./ 命令去执行,需要先给这个 bin 文件赋权限 chmod u+x 文件名(全名称) 执行完成这个命令,可以 ...
- MAVEN项目的搭建
MAVEN能为我们做什么? 1.Jar的声明式依赖性管理 2.项目的自动构建 搭建流程 环境配置 http://maven.apache.org/download.html 下载最新版本Maven 3 ...
- 使用maven服务器插件 运行项目
使用jetty插件 部署运行 创建一个maven项目:去Maven仓库中寻找jetty插件 然后复制到pom.xml中 使用命令 运行程序: 然后控制台打印: 通过浏览器 访问: ----- ...
- HDU3236 Gift Hunting
/* HDU3236 Gift Hunting http://acm.hdu.edu.cn/showproblem.php?pid=3236 dp 滚动数组 * * */ #include <c ...
- jquery---- 数组根据值进行删除
var chooseAttr = []; //serviceId为值 chooseAttr.splice($.inArray(serviceId,chooseAttr),);
- E - QS Network
E - QS Network 思路:最小生成树,数组不要开小了. #include<cstdio> #include<cstring> #include<iostream ...
- Python爬虫之正則表達式
1.经常使用符号 . :匹配随意字符,换行符 \n 除外 * :匹配前一个字符0次或无限次 ? :匹配前一个字符0次或1次 .* :贪心算法.尽可能的匹配多的字符 .*? :非贪心算法 () ...