简述同步和异步的区别

在js编程中有两种思想:同步,异步。有些人会分不清不认识什么是同步和异步
想要分清我们首先要知道js的特性单线程。所谓单线程就是在没有完成这件事情的之前不会去做下件事情
那么同步也就是好理解了。上件事情没有完成,就继续做上件事情,等上件事情完成后才会去做下一件事情,js的大部分编程都是同步的。
异步就完全不同了,每个任务都有一个或者多个回调函数(callback),上一个任务执行完成后,不是立刻执行下一个任务,而是执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的、异步的,异步是可以提高执行效率。
说到这里就不得不说下异步运行机制
(1)所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。
(2)主线程之外,还存在一个"任务队列"(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。
(3)一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。
(4)主线程不断重复上面的第三步。

猜你喜欢

转载自blog.csdn.net/xiaoHelloWord/article/details/94592181
今日推荐