2021-04-16

async 和 defer 的区别

  • async:异步加载脚本,加载完之后立即执行(回调的方式)
  • defer:异步加载脚本,在 DOM 解析完之后执行

节流/防抖

  • 节流:在某一时间段内只执行一次

    var throttle = function(func, delay) {
    var prev = Date.now();
    return function() {
    var context = this;
    var args = arguments;
    var now = Date.now();
    if (now - prev >= delay) {
    func.apply(context, args);
    prev = Date.now();
    }
    }
    }

  • 防抖:在 n 秒后执行函数,如果期间又有触发,则重新计时,即只执行最后一次

    function debounce(fn, wait) {
    var timeout = null;
    return function() {
    if(timeout !== null)
    clearTimeout(timeout);
    timeout = setTimeout(fn, wait);
    }
    }

visibility:hidden 和 display:none 的区别

  • visibility 为 hidden:让一个元素不可见,但没有消除 DOM 元素,所以元素依然占用位置
  • display 为 none:从 DOM 中删除元素

Http/2

HTTP 1.x 中,如果想并发多个请求,必须使用多个 TCP 链接(不能并发),且浏览器为了控制资源,还会对单个域名有 6-8个的TCP链接请求限制

  • 多路复用许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息
  • 如何实现多路复用:二进制分帧
  • 二进制分帧:将 http/1.1 请求二进制编码,分割为帧:首部信息会被封装到 HEADER frame,而相应的 Request Body 则封装到 DATA frame 里面
  • 首部压缩:http/2 压缩 headers 算法:HPACK
  • 服务端推送

LocalStorage 设置超时时间

将超时时间 expire 和设置时间 startTime 也存入 localStorage 中,在 getItem 时,通过比较当前时间 Date.now 和 expire 和 startTime 确定返回空还是值,返回空代表超时

promise 与 async await 的区别

tcp/udp

upd:没有建立连接,在应用程序的报文上加 只有 8 个字节的头信息(包括源端口、目的端口、长度、检验和),然后就交给 ip 层

tcp 三次握手:

  1. 客户端发起询问:可以吗?
  2. 服务端确认:可以!
  3. 客服端收到回复后,发出确认是否同步的报文:为了防止失效的连接请求到达服务器,让服务器错误打开连接

tcp 四处挥手:

  1. 客户端发起关闭报文:我要关闭从我到你方向的链接了
  2. 服务端确认:好的,我知道了;(稍后我也会关闭到你方向的链接,现在我想向你传输的数据还没有传完)
  3. 服务端发起关闭报文:我要关闭向你方向的链接了
  4. 客户端回复:好的,我知道了

TCP连接是双向传输的对等的模式,就是说双方都可以同时向对方发送和接收数据

你可能感兴趣的:(2021-04-16)