学习咯3-promise规范及应用

72 阅读2分钟

一、异步

不是跟着主线程同步执行的,就是异步。

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?