一、异步
不是跟着主线程同步执行的,就是异步。
1、进程 && 线程
进程:程序的一次完整执行,拥有独立的内存空间(cpu资源分配的最小单位)。
线程:进程内的一个独立执行单元(cpu执行的最小单位),同一个进程下的所有线程,共享进程的地址空间。
二、任务
1、宏任务(macro task):script(同步任务)、setTimeout、setInterval、I/O、DOM事件......
2、微任务(micro task):promise回调、defineProperty、Proxy......
执行顺序:先依次执行同步任务,回过来执行微任务,执行宏任务。
同步任务 => 异步任务(微任务 => 宏任务)
3 promise
q1:chrome浏览器新开一个窗口,是进程还是线程?
a:进程
q2:窗口间的通信?
a:localStorage、cookie、websocket、indexedDb
q3:多种存储的区别、应用场景?
q4:页面渲染过程
a:解析htmlcss,构建dom树、cssom树,进行重排重绘
q5:浏览器原理?
a:
1、GUI渲染线程(与JS引擎线程互斥):解析htmlcss,构建dom树、cssom树,进行重排重绘;
2、JS引擎线程(与渲染线程互斥):解析执行js脚本,分配处理执行待执行事件以及维护事件队列。
3、定时器的触发线程:异步定时器的处理执行(settimeout、setinterval),接收并执行js引擎分配的定时器任务,处理完成交由事件触发线程。
4、事件触发线程:接收所有事件,将回调的事件依次加入到任务队列,交给js引擎执行。
5、异步HTTP线程:异步执行请求类操作,接收js引擎下城异步请求操作,监听回调,交给事件触发做处理。
q6:promise状态及流转?
a:pending(默认)、fulfilled、rejected。pending -> fulfilled | rejected(均不可逆)。
q7:promise返回值?
a:then方法:接收onFulfilled和onRejected
q8:手写promise?