什么是同步与异步?

478 阅读2分钟

1. 什么是同步与异步?

计算机领域中的同步与异步和我们现实社会的同步和异步正好相反。现实中的同步,就是同时进行,突出的是"同",比如看足球比赛的时候吃着零食,两件事情同时发生;异步就是不同时。但计算机中与现实存在一定差异。

举个栗子

天气冷了,早上刚醒来想喝点热水暖暖身子,但这每天起早贪黑996,晚上回来太累躺下就睡,没开水啊,没法子,只好急急忙忙去烧水。

现在早上太冷了啊,不由得在被窝里面多躺了一会,收拾的时间紧紧巴巴,不能空等水开,于是我便趁此去洗漱,收拾自己。 洗漱完,水开了,喝到暖暖的热水,舒服啊!

舒服完,开启新的996之日,打工人出发!

烧水和洗漱是在同时间进行的,这就是计算机中的异步

计算机中的同步是连续性的动作,上一步未完成前,下一步会发生堵塞,直至上一步完成后,下一步才可以继续执行。例如:只有等水开,才能喝到暖暖的热水。

同步与异步执行顺序

  1. JavaScript将任务分为同步任务和异步任务,同步任务进入主线中中,异步任务首先到Event Table进行回调函数注册。
  2. 当异步任务的触发条件满足,将回调函数从Event Table压入Event Queue中。
  3. 主线程里面的同步任务执行完毕,系统会去Event Queue中读取异步的回调函数。
  4. 只要主线程空了,就会去Event Queue读取回调函数,这个过程被称为Event Loop

举个例子:

-   setTimeout(user, 1000),当1000ms后,就将user压入Event Queue。
-   ajax(请求条件, user),当http请求发送成功后,user压入Event Queue。