同步和异步的区别

首先,需要注意的是js不同于其他的后端语言,它的一门单线程的语言,所谓单线程就是指在执行任务时任务只能一个接一个的执行。所以这就限定了浏览器在渲染页面时不能进行其他的操作。所以在js中任务分为同步任务异步任务

同步任务:指运行在主线程上面的任务,该线程上面的任务只能一个一个的执行,(只有等前一个任务完成,后面的任务才会进行)

异步任务:指运行在任务队列里面的任务。任务队列里面的任务只有等主线程中的任务执行完才会开始通知主线程,请求执行任务,该任务才会进入主线程执行。

任务队列中的任务分为宏任务微任务。

常见宏任务

  异步ajax请求、setTimeout、setInterval

  文件读取与存储

常见微任务

  Promise封装的异步任务

浏览器对同步任务、异步任务(宏任务与微任务)的执行先后:

浏览器会先执行主程序上面的同步任务,等同步任务都执行完,就会将异步任务中的微任务调到主线程上面执行,在执行完微任务后将异步任务中的宏任务调到主线程上面执行,一直按该规则进行,直到将所以任务执行完

你可能感兴趣的:(同步和异步的区别)