jeddygong / frontend-document

前端每日一练,大厂面试题目,涵盖前端所有知识点,每天进步一点点。HTML/CSS/Javascript/Nodejs/Typescript/ECMAScript/Vue/React/Webpack/小程序/网络/设计模式/数据结构/算法/安全/工程化/性能优化
https://jeddygong.github.io/frontend-document
MIT License
10 stars 4 forks source link

[JS] [2021-03-30 更新] javascript中回调函数和任务队列的区别? #28

Open jeddygong opened 3 years ago

jeddygong commented 3 years ago

1. 回调函数

​ 回调函数是作为参数传给另一个函数的函数,这个函数会在另-个函数执行完成后执行。

2. 任务队列

​ 任务队列是一个事件的队列,I0设备完成-项任务后,就在队列中添加一个事件,表示相关的异步任务可以进入执行栈了。

2.1 同步任务:

​ 主线程上排队执行的任务,前一个任务执行完成后才能执行下一个任务。

2.2 异步任务:

​ 不进入主线程,进入任务队列的任务。只有当主线程上的同步任务执行完成后,主线程会读取任务队列中的任务,开始异步执行。

任务队列中的事件包括IO设备的事件、用户产生的事件。只要指定过回调函数,这些事件发生时就会进入任务队列,等待主线程读取

异步任务必须指定回调函数,当主线程开始执行异步任务,就是执行对应的回调函数。