【博学谷学习记录】超强总结,用心分享 _ 前端开发 干货分享-面试题总结(5)


Promise

是异步编程的解决方案,将异步操作用同步操作的流程表达出来,避免层层嵌套的回调函数,解决回调地狱问题。包含一个参数和一个带有两个参数的回调,分别是resolve和reject。
promise的三种状态: pending、fulfilled、rejected。
promise的实例方法: then(成功)、catch(失败)、finally(无论结果如何都执行)。 (状态一旦定了就不能改变)
promise的静态方法: all、race、any、resolve、reject
promise.all、promise.race、promise.any区别:
all:存放多个promise,都成功all的状态才成功,有一个失败all就变成失败转态
race:哪个结果获得最快,race就是那个结果
any:返回最快的成功结果,如果全部失败就返回失败结果
promise/async/await区别:
promise:then里的回调函数会放到宏任务的微任务队列中,等宏任务执行完再执行
async:表示函数里可能有异步方法,await后面跟一个表达式。async方法执行时,遇到await会立即执行表达式,表达式后面的代码放到微任务队列中,让同步代码先执行。


即时通讯

如何实现即时通讯?
短轮询:开一个定时器,每隔一段时间发请求(实时性不强,影响性能)
长轮询:发送一个请求,服务器数据不更新,就一直阻塞(服务器压力过大)
SSE:利用http协议,做不到让服务器主动发信息给客户端
websocket:全双工通信,只需要建立一次连接就可以一致保持连接状态。
socket.io:
基于websocket的库
消息列表 chatMsgList
获取更多消息 getChatMsgList
接收消息 receiveChatMsg
发送消息 sendChatMsg


cookie和localstorage区别

  • cookie是服务器端用来纪录用户状态的一种方式,服务器设置,客户端存储。最多4k数据,浏览器关闭就消失,只能同源页面共享
  • localstorage是h5提供的方法,5M或更大,除非手动删除,同源页面共享。

vue2如何给数组添加响应式

重写数组的原型方法、Object.defineProperty()、观察者模式监听

vue2和vue3的diff算法区别

  • vue2采用双端指针,新旧节点按照一定规则对比,然后执行相应更新操作。缺点:如果数据流大,对比非常耗时
  • vue3采用全量对比差异更新,每次更新时生成新的虚拟dom树,与旧的虚拟dom树对比,然后将新的虚拟dom树转化为操作令;
  • vue3还提供了“静态提升”,将静态节点编译时提取出来,避免对比时浪费时间。

修改data数据但没有更新

  • vue响应式依赖于对象属性的getter和setter方法,不能监听所有变化。如vue钩子函数外修改、异步代码修改、数组下标修改
  • 解决方法:Vue.set()、this.$nextTick()、使用深度监听修改嵌套对象的属性值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值