JS语言的一大特点:单线程,也就是说,同一个时间只能做一件事。
什么是同步,什么是异步?
同步指的是一次只能完成一件任务,如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。
异步指的是每一个任务有一个或者多个回调函数,前一个任务结束后不是执行后一个任务,而是执行回调函数,后一个任务不是等前一个任务结束就执行,所以程序的执行顺序和任务的排列顺序是不一致的、异步的。
他们的本质区别:这条流水线上各个流程的执行顺序不同。
同步任务
同步任务都在主线程上执行,形成一个执行栈。
异步任务
异步任务是通过回调函数实现的 ,异步任务放到任务队列里面。
异步任务有三种类型:
1、普通事件 如click、resize
2、资源加载 如load、error
3、定时器,包括setlnterval、setTimeout
JS执行机制:
由于主线程不断地重复获得任务,执行任务,再获得任务,再执行 所以这种机制叫做事件循环。
console.log(1);
document.onclick=function (){
console.log("click");
};
console.log(2);
//执行输出顺序:1/2/click