异步和同步;

JS是单线程的;异步就是模拟多线程;一件事情A正在等待中,我们不需要等它;继续做下面的

事情B;这就是异步编程;当B做完以后,如果发现A也做完了,再做A后面的事情;

 

同步:事情A在处理,在A处理的期间,只能等;只有A处理完以后,才能做接下来的事情;

·

同步的案例如下;

function fn() {
for (var i = 0; i < 1000; i++) {

}
console.log(i);//只有循环完成才能输出i
return i;
}
var c = fn();
console.log(c);//只有fn执行完成后才会输出c

 

·

异步编程案例:

1、所有的时间绑定都是异步编程;

oDiv.onclick=function(){};
window.onload=function(){};
console.log(100);

·

2、定时器都是异步编程;

定时器的等待时间是有最小值的 每个浏览器都有一个最小值,即使你写的是0,也不是立即执行;

相当于遇到定时器,就给它开一个新的队列;等本次执行完,再执行那个新队列;

下面是题目:

var num = 12;
window.setTimeout(function () {
num++;
console.log(num);
}, 5);
for (var i = 0; i < 10000; i++) {//这个循环时间肯定大于5ms,但是也是先从上倒下执行,只有下面的代码都执行完成,才会返回头看定时器是否到时间,到了在执行定时器里面的

}
console.log(num);
//先输出12然后在输出13

·····

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

··