JS中同步和异步的一点我的理解

首先,咱们要知道,JavaScript的本质是一门浏览器脚本语言,在执行的时候是一行一行的执行,只有前面的代码执行完了才会执行后面的代码。JS是单线程语言指的就是这个意思。程序员

对于同步任务和异步任务,打个比喻:编程

有一堆学生在食堂排队打饭,而后进门的时候有些学生领了个异步的牌子,有些学生没有领,而后在窗口前排队打饭的时候,食堂大叔规定,有异步牌子的学生出来从新组成一个小队列,在窗口旁边等待,没有牌子的学生仍然在窗口前的主队里排队打饭。等主队里没有牌子的学生排队打完饭以后,食堂大叔示意小队列里有异步牌子的学生一个个的过来打饭。浏览器

抛开这个场景不谈,在js中,同步和异步的概念,有不少博主的解释就是“同步就是任务一个接一个的执行,前面的没有执行完成后面的就一直等待”,“异步就是以为一个任务要执行会花很长时间,因此先放着,去执行其余的任务,等轮到这个任务的时候再执行。”异步

不少小伙伴看到这里就懵逼了,怎么着,系统还能识别哪一个任务执行时间长哪一个短?有这么智能好用的系统?要是系统自动识别执行时长,任务管理不会乱套?因此,我我的以为这些博主的描述是有很大问题的。函数

一个任务是不是异步的是看程序员在编写代码的时候是否将这个任务设置为异步,而不是说时间长的任务就必定是异步的,只是一般来说为了流畅性,编程者会将执行时间长的任务主观的设置为异步。spa

那么这里就涉及到一个问题了,怎么将一个任务设置为异步?线程

JS中最基础的有两种方式——setTimeout函数和setInterval函数。队列

相关文章
相关标签/搜索