网站转wordpress,官方网站后台图片下载怎么做,西安市住房和城乡建设局官网,外贸网站都有哪些内容1. 进程(process)/线程(thread)进程process#xff1a; 电脑端安装很多的应用软件#xff0c;每当运行一个应用程序#xff0c;相当于开辟一个进程#xff08;而对于浏览器来说#xff0c;每新建一个页卡访问一个页面#xff0c;都是新开辟一个进程#xff09;任务管理器…1. 进程(process)/线程(thread)进程process 电脑端安装很多的应用软件每当运行一个应用程序相当于开辟一个进程而对于浏览器来说每新建一个页卡访问一个页面都是新开辟一个进程任务管理器可以查看进程线程thread 每一个进程中可能还会同时做很多事情如果程序中需要同时处理很多事情则需要开辟多个线程一个线程同时只能做一个事情 一个进程中会包含0~多个线程理解每一个饭店是一个进程饭店里面每一个点餐的服务员就是一个线程2. JS是单线程的线程浏览器是‘多线程’的但是JS渲染或者页面渲染是‘单线程’的2.1 浏览器中线程的分类GUI渲染线程渲染和绘制页面JS引擎线程运行和渲染JS代码事件管控和触发线程定时器管控和触发线程异步HTTP请求线程...2.2 JS代码的渲染是单线程的浏览器是多线程的打开一个页面以后浏览器至少要分配好几个线程同时去处理事情但是浏览器只会分配出一个线程去渲染代码GUI渲染线程所以说JS是单线程的‘在JS代码执行过程中一次只能处理一个事情’3. 同步与异步同步编程【单线程】任务是一次执行上面的任务没有执行完成下面的任务是不能去操作的异步编程【多线程】同时可以处理很多事情但是JS中的异步编程是利用浏览器的相关机制构造出来的异步效果通俗的理解比如我们在食堂打饭这个场景 我们在排队打饭但是当排到B打饭的时候他的王者荣耀游戏还没有打完吃饭不积极思想... 此时同步编程思想处理的方式就是我们大家都等B打完游戏只要B不打饭后面的也不能打饭B不会就是食堂老板的儿子吧这么多人等他打游戏 但是异步编程思想处理方式是这样的不管你的后台有多大腾不出手就去旁边的任务队列等着去等我们大家都打完饭你的游戏也打完了再来打饭这你还怎么猖狂 3.1 常见的异步代码定时器设置定时器是同步立即设置异步指的是间隔多久后执行指定的函数事件绑定监听AJAX的异步请求promise/async/await4 定时器setTimeoutsetInterval4.1 定时器的返回值返回值是一个数字代表当前是第几个定时器我们后期可以基于clearTimeout / clearInterval 清除定时器手动把timer赋值为null后期基于它的值验证是否存在定时器4.2 浏览器的最小反应时间定时器是异步的遇到定时器先不执行先去执行其他事情等到所有事情做完再看那个定时器到达时间然后可以立马执行定时器的等待时间即使设置为零也不是立即执行浏览器有一个最小的等待时间谷歌5~6MS IE浏览器10~13MS最小反应时间在滚动相同的距离下事件被触发多少次取决于滚动所用的时间速度来决定的浏览器有最小的反应时间假设是5MS整体运动时间100MS这段时间内浏览器能够识别出来的次数是100/5 20次。同理如果我们运动1000MS那么识别触发的次数就是1000/5200次4.3 从定时器的执行过程理解它的异步的把代码拿到栈中执行当遇到异步代码定时器的时候会立即把定时器拿到任务队列中去等待一定时间当把主线程的所有代码执行完毕之后去任务队列中查看哪个定时器到达时间把到达时间的定时器拿到栈中执行这种操作是异步 遇到定时器不是不处理而是把它放在任务队列等到主线程空闲下来再去任务队列查看这种操作是异步。中途定时器到达时间了但是主线程并没有到达时间此时也不会立即执行定时器必须等到主线程空闲下来。4.4 下面是关于定时器的对异步代码的理解配有图片和注释的说明 4.4.1 题目一let n 0;
setTimeout(() {n;console.log(n); // 3 (2)
}, 1000); //一秒钟之后执行
n 2;
console.log(n); // 2 (1)
4.4.2 题目二let n 0;
setTimeout(() {n;console.log(n); // 3 (2)
},0); //写零也不是立即执行而是有一个最小的等待时间10ms左右
n 2;
console.log(n); // 2 (1)
4.4.3 题目三let n 10;
setTimeout(() {n;console.log(n); //11(3)
}, 0);
console.log(n); //10(1)
for(let i 0;i 99999999; i){}
console.log(n); //10(2)
4.4.4 题目四time / timeEnd:获取他们中间代码执行所需要的时间这个时间需要受到电脑配置、和当前电脑运行的环境等多方面因素影响时间只作为参考setTimeout(() {console.log(1);
}, 20);
console.log(2);
setTimeout(() {console.log(3);
}, 10);
console.log(4);
console.time(AA);
for (let i 0; i 90000000; i) {// do soming
}
console.timeEnd(AA); //AA: 79ms 左右
console.log(5);
setTimeout(() {console.log(6);
}, 8);
console.log(7);
setTimeout(() {console.log(8);
}, 15);
console.log(9);
4.4.5 题目五console.log(1); //1(1)
setTimeout(function () {console.log(2);
}, 20);
console.log(3); //3(2)
for (let i 0; i -1; i) {} //死循环GUI线程啥都做不了一直在这加载其它什么事情都干不了
console.log(4);
setTimeout(function () {console.log(5);
}, 10);
console.log(6);
5. 事件循环 Event Loop定义JS是单线程的因为浏览器只分配一个线程自上而下加载代码。所以JS中大部分任务都是同步任务。但是一定也有异步任务定时器、事件绑定等这些都属于异步任务。而浏览器处理JS中的异步任务是在JS代码自上而下执行的时候代码进栈执行执行完出栈在这反反复复进行的过程中。当遇到定时器等异步任务的时候会把当前任务放在等待任务队列Event Queue中存起来并且存起来之后不会影响下面代码的执行主线程会继续执行。当 把下面的同步任务执行完成之后主线程空闲下来了会去等待队列找哪一个任务到达指定的时间点就拿到主线程中去执行。执行完之后再去等待队列中查看...