ES6
- ES6
- set vs weakSet
- map vs weakMap
- Promise
- 创建
- 三个状态
ES6
set vs weakSet
- 都是集合,只不过weakSet里面只能存引用类型的变量。
- weakSet相对set的好处就是,可以避免内存泄漏。因为weakSet中的成员,如果在外部消失了,会自动消失。也就是变量被回收了的话,has判断是false.
- 内存泄漏:某块内存,程序不再使用,但还是没有被释放。
map vs weakMap
- weak的表现和上面的一样,只不过之表现在key.key引用消失了,weakMap就删除键值对了.但是,value引用消失了,不影响.
- map和weakMap的区别是key;weakMap只允许对象,其实也就是弱引用做为键.
Promise
- new Promise(excutor);excutor是一个函数,会立刻执行;
- then对应的是微任务
- 掌握几个常见的api:.all .allSetteled .race
- all 等待全部reslove,有一个为reject都会进入catch
- allSetteled只要全部fullfiled了就可以进入then回调了
- race取最先fullfiled的promise的结果
什么时候订阅都是可以正常收到resolve的状态,但是excutor不会重新执行的。
创建
new Promise(excutor)
,excutor是一个函数,可以接受两个入参resolve,reject。
javascript">new Promise(()=>{})
new Promise((resolve)=>{})
new Promise((resolve,reject)=>{})
只写一个new Promise()
会报错:Promise resolver undefined si not a funciton
三个状态
pending
fullfiled:resolve
fullfiled:reject
打印p就好理解了,p是一个promise对象,状态为fulfilled;所以无论何时then,都能读到他的fulfilled值:‘hi’;
reject是一样的道理: