zoukankan      html  css  js  c++  java
  • Symbol 小妙处

    input 框输入后发送异步请求,页面拿到响应进行渲染。但偶尔会遇到问题:响应内容和输入结果不一致。因为 http 无法保证响应到达的顺序。

    如何解决呢?提供一个小思路。

    myRequest.js

    import request from '@/request'
    
    function myRequest (opts) {
      if (!opts.pid) throw {message: 'pid 不能为空'}
    
      const KEY = Symbol.for(opts.pid)
      const requestId = ~~myRequest[KEY] + 1
      myRequest[KEY] = requestId
    
      return request(opts)
        .then(res => {
          return myRequest[KEY] === requestId
            ? res
            : null
        })
    }
    
    export default myRequest
    
    

    我们使用 requestId 标识请求的次数,并将其封装到 myRequest 函数对象内。处理响应时,比较这两个值,若不相等则丢掉。这保证页面渲染的数据始终是最新的

    Symbol.for(..) 在全局符号注册表中搜索,来查看是否有描述文字相同的符号已经存在,如果有的话就返回它。如果没有的话,会新建一个并将其返回。

    在上例中,Symbol 保证了键的唯一性,也减少了一次判断。

  • 相关阅读:
    python 基础1-变量名
    Jmeter分布式测试踩过的坑
    Jmeter接口测试踩过的坑
    搭建数据库环境
    char与char的区别
    jmeter性能测试的小小实践
    自动化测试badboy脚本开发(一)
    sql多表查询(单表查询略过)
    认识jmeter
    http与https的区别
  • 原文地址:https://www.cnblogs.com/fayin/p/11858555.html
Copyright © 2011-2022 走看看