适用场景:比如当一个页面需要在很多个模块的数据都返回回来时才正常显示,否则 loading。
promise.all 中的子任务是并发执行的,适用于前后没有依赖关系的。Promise.race()意为赛跑
的意思,也就是数组中的任务哪个获取的块,就返回哪个,不管结果本身是成功还是失败。
一般用于和定时器绑定,比如将一个请求和三秒的定时器包装成 Promise 实例,加入到
Promise 队列中,请求三秒中还没有回应时,给用户一些提示或相应的操作。
7、微任务和宏任务的区别
1.宏任务:当前调用栈中执行的代码成为宏任务。(主代码快,定时器等等)。
2.微任务: 当前(此次事件循环中)宏任务执行完,在下一个宏任务开始之前需要执行的
任务,可以理解为回调事件。(promise.then,proness.nextTick 等等)。
3. 宏任务中的事件放在 callback queue 中,由事件触发线程维护;微任务的事件放在微任务
队列中,由 js 引擎线程维护。
微任务:process.nextTick、MutationObserver、Promise.then catch finally
宏任务:I/O、setTimeout、setInterval、setImmediate、requestAnimationFrame
1、Vue 中的的通信方式有几种?隔代组件的通信你用那种方式解决?
props/$emit 适用父子组件通信
ref 与 parent/children 适用父子组件通信
attrs/listeners,provide/inject 适用于隔代组件通信
vuex,EventBus(事件总线) 适用于父子、隔代、兄弟组件通信
slot 插槽方式
2、v-show 和 v-if 指令的共同点和不同点?
v-show 是 css 切换,v-if 是完整的销毁和重新创建,如果频繁切换时用 v-show,运行时较少
改变用 v-if
3、为什么使用 key?
做一个唯一标识, Diff 算法就可以正确的识别此节点。作用主要是为了高效的更新虚拟
DOM。
4、简述 computed 和 watch 的使用场景
computed:
支持缓存,数据变,直接会触发相应的操作;
监听的函数接收两个参数,第一个参数是最新的值;第二个参数是输入之前的值;
当一个属性发生变化时,需要执行对应的操作;即一个属性受多个属性影响,多对一或者一
对一的关系;
监听的是这个属性自身的变化,且不会操作缓存
监听数据必须是 data 中声明过或者父组件传递过来的 props 中的数据,当数据变化时,触
发其他操作,函数有两个参数,
是一个计算属性,类似于过滤器,对绑定到 view 的数据进行处理
当一个属性受多个属性影响的时候就需要用到 computed
最典型的例子: 购物车商品结算的时候
watch:
1.是观察的动作,