JS——异步 单线程
JS——JS运行机制(异步 单线程)
1 知识点
1.1 如何理解 JS 的单线程
同一时间只能做一件事
1.2 什么是任务队列(event queue)
JS有任务优先级。同步任务>异步任务
1.3 什么是异步(同步)
同步:发送一个请求,等待返回,然后再发送下一个请求
异步:发送一个请求,不等待返回,随时可以再发送下一个请求
1.4 什么是事件循环(event loop)
同步任务放入运行栈中,异步任务则不放入,过了设定的时间放入异步任务队列中,
同步任务执行完,异步任务队列中的任务放入运行栈中,运行栈运行完空了又去异步任务队列监听是否有任务,
有就再执行,如此循环,就是事件循环(Event Loop)
1.5 理解哪些语句会放入异步任务队列 or 什么时候执行异步任务 or 前端使用异步的场景
所有的“等待的情况”都需要异步
①定时任务:setTimeout、setInterval
②网络请求:ajax请求、动态img加载
③事件绑定(addEventListener)
④ ES6 中的 Promise
1.6 5)理解语句放入异步队列的时机
过了设定的时间
2 问答
*同步和异步的区别是什么?分别举一个同步和异步的例子
*一个关于 setTimeout 的笔试题
*前端使用异步的场景有哪些(同知识点1.5)
*异步实现的原理,js 与内核 之间的交互
2.1 同步和异步的区别是什么?分别举一个同步和异步的例子
①同步会阻塞代码执行,而异步不会;
②alert是同步,setTimeout是异步
2.2 一个关于 setTimeout 的笔试题(异步和单线程的关系)
因为JS单线程的特点,异步可以解决阻塞的问题
2.3 前端使用异步的场景有哪些
(同知识点1.5)
2.4 异步实现的原理,js 与内核 之间的交互
(异步的原理——回答js运行机制【单线程、任务队列、事件循环、异步任务队列的语句】)
js 是单线程,同一时间只能做一件事。针对这种特性,异步可以解决阻塞的问题。
任务队列中,同步事件的优先级高于异步事件。
同步任务放入运行栈中,异步任务则不放入,过了设定的时间放入异步任务队列中,
同步任务执行完,异步任务队列中的任务放入运行栈中,运行栈运行完空了又去异步任务队列监听是否有任务,
有就再执行,如此循环,就是事件循环(Event Loop)。
【其实就说一下,因为js单线程的特性,事件循环过程中异步事件会在同步事件后执行】