JS将任务的执行模式分为两种:同步(synchronous) 和 异步(asynchronous)。
1.同步:上一个任务全部都完成之后,再去执行下一个任务。
2.异步:下一个任务不用等上一个任务全部都完成,可以直接往下执行。
eg. 同步:刷牙和洗脸,先刷完牙,再洗脸或先洗完脸,再刷牙。
异步:刷牙的同时去烧水。
(备注:js是单线程的,按照从上往下顺序执行代码,当遇到异步程序时,会将异步代码抽出来放入事件队列中,先执行完后面的所有同步代码,最后再去执行事件队列里面的。)
终极提示:执行(全)都是同步的,只有结果是异步(即动作已经执行了,但是结果没有立即回来,即结果是异步的)!
3.回调函数:回调与同步、异步并没有直接的联系,回调只是一种实现方式,既可以有同步回调,也可以有异步回调,还可以有事件处理回调和延迟函数回调。
异步:凡是需要等一会的,都是异步。
(1)读数据的都是异步的(请求数据)。
(2)交互事件。
(3)setTimeout和setInterval函数(注:等0毫秒,也是异步!)。
扩展:
将异步代码写成同步代码(逻辑没变(异步的还是异步),写法形式改变):promise
将异步逻辑代码该成真正的同步代码 (逻辑和写法都改变了): async+await
参照:https://www.cnblogs.com/moxiaowohuwei/p/8438236.html