JS执行机制-同步异步线程问题

目录

一.了解线程问题

二.原理探讨


一.了解线程问题

首先我们需要知道JS是单线程的,什么是单线程呢?

单线程就是同一时间只能做一件事,不过可以单线程多任务执行

这时就需要提到同步执行和异步执行了

同步:前一个任务结束之后再去执行后一个任务,程序的执行顺序与任务的排列顺序是一致的

异步:在执行一个任务的时候,因为花费事件比较长,所以在执行这个任务的时候同时去处理其他的任务

比如我们来看一个例子:

console.log('这是第一个书写的')

//注意这里没有给定时间,所以和普通事件执行的时间是一样的
setTimeout(()=> {
    console.log('这是第二个写的')
},0)

console.log('这是最后书写的')

 这样的话就不难得出异步线程的结论了:处理快的任务先执行,不遵循任务排列顺序


二.原理探讨

同步任务其实就是放在主线程上执行,形成一个执行栈

异步任务本质是通过回调函数实现的

常见异步有很多,比如click点击事件,resize窗口调整事件;再或者是load窗口加载事件;亦或者是定时器等等

那我们以刚才的例子来分析一下同步任务、异步任务是怎么执行的:

JS执行机制-同步异步线程问题_第1张图片

你可能感兴趣的:(杂谈,JS,javascript,线程,JS执行机制,js,同步异步任务)