如何优雅回答ajax有关问题

面试回答思路

面试问题:谈谈原生ajax【详细】

  1. 优点。局部刷新,提升用户体验
  2. 缺点。原生ajax兼容性问题【ie】,Ajax缓存问题,回调地狱问题,单向请求问题
  3. 有解决方案。
  4. 造轮子。封装原生ajax,promise封装ajax
  5. 开发中提高效率。jquery,axios,fetch
  6. 手写原生ajax请求

解决方案

  1. 原生ajax兼容性问题,如何解决
    xhr = new XMLHttpRequest()
    xhr = new ActiveXObject()
    var xhr = null;
    if(window.XMLHttpRequest){
    xhr = new XMLHttpRequest()
    }else{
    xhr = new ActiveXObject()
    }
    
  2. Ajax缓存问题,如何解决
    1.随机数 或者时间戳
    在 Ajax 的 URL 参数后加上 "?fresh=" + Math.random();
    在 URL 参数后加上 "?timestamp=" + new Date().getTime();
    
    2.服务器端加header
    header("Cache-Control: no-cache, must-revalidate")
    
    3.ajax发送前加上 setRequestHeader
    在ajax发送请求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache")
    
  3. 回调地狱问题,如何解决
    ES6中的Promise,终极解决方案是async/await
  4. 单向请求问题,如何解决
    例子:聊天室,在线客服
    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.");
    };
    
posted @ 2020-04-22 11:34  dream_gwh  阅读(110)  评论(0)    收藏  举报