JavaScript中同步与异步

1.简单理解

如果把代码比作车辆,同步:就是车辆在一个车道上,排队行驶,

          异步:车辆在不同车道上,谁快,谁先

2.JS中它们的区别:

因为js是一门单线程预约,所谓的“所谓的单线程”也就是指只能完成一件任务,如果是多个任务的话就需要进行排队,前面一个完成了才能执行后面的任务,以此类推,如果前面的任务耗时较长,后面的任务只能等待,同时也会拖延整个程序,常见的是浏览器无反应的情况。也就是常见的死循环,造成程序卡在某一个位置,无法继续执行代码,

为了解决整个问题,js的执行模式分为了两种情况,同步与异步

  1. “同步模式"就是上一段的模式,后一个任务等待前一个任务结束,然后再执行,程序的执行顺序与任务的排列顺序是一致的、同步的;“异步模式"则完全不同,每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的、异步的。
    具体来说,异步运行机制如下:
    (1)所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。
    (2)主线程之外,还存在一个"任务队列”(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。
    (3)一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列”,看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。
    (4)主线程不断重复上面的第三步。

3."异步模式"编程的4种方法:
  1.回调函数
  2.事件监听,任务的执行不取决于代码的顺序,而取决于某个事件是否发生
  3.发布订阅模式,也叫观察者模式
  4.Promises对象

最基础的异步是setTimeout和setInterval函数,很常见,但是很少人有人知道其实这就是异步,因为它们可以控制js的执行顺序

posted @ 2023-02-26 21:22  小田学不好  阅读(108)  评论(0)    收藏  举报