如何优雅回答ajax有关问题
面试回答思路
面试问题:谈谈原生ajax【详细】
- 优点。局部刷新,提升用户体验
- 缺点。原生ajax兼容性问题【ie】,Ajax缓存问题,回调地狱问题,单向请求问题
- 有解决方案。
- 造轮子。封装原生ajax,promise封装ajax
- 开发中提高效率。jquery,axios,fetch
- 手写原生ajax请求
解决方案
- 原生ajax兼容性问题,如何解决
xhr = new XMLHttpRequest()
xhr = new ActiveXObject()var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpRequest() }else{ xhr = new ActiveXObject() } - Ajax缓存问题,如何解决
1.随机数 或者时间戳
2.服务器端加header在 Ajax 的 URL 参数后加上 "?fresh=" + Math.random(); 在 URL 参数后加上 "?timestamp=" + new Date().getTime();
3.ajax发送前加上 setRequestHeaderheader("Cache-Control: no-cache, must-revalidate")在ajax发送请求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache") - 回调地狱问题,如何解决
ES6中的Promise,终极解决方案是async/await - 单向请求问题,如何解决
例子:聊天室,在线客服var ws = new WebSocket("wss://127.0.0.1:8080"); ws.onopen = function(evt) { //绑定连接事件 console.log("Connection open ..."); ws.send("发送的数据"); }; ws.onmessage = function(evt) {//绑定收到消息事件 console.log( "Received Message: " + evt.data); }; ws.onclose = function(evt) { //绑定关闭或断开连接事件 console.log("Connection closed."); };
种一棵树最好的时间是十年前,其次是现在。

浙公网安备 33010602011771号