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 保证了键的唯一性,也减少了一次判断。

最新文章

  1. 如何用C#代码判断一个类的类型
  2. NFS服务器原理
  3. C++ - 虚基类、虚函数与纯虚函数
  4. Java多线程总结(二)锁、线程池
  5. oracle11g 连接问题
  6. Android项目能运行,上传svn后再下载却不能运行
  7. Fedora 17配置ssh及Windows远程连接
  8. container_of用法及实现
  9. swift 2 选择头像图片
  10. NYOJ 66 分数拆分
  11. poj 1704 Georgia and Bob(阶梯博弈)
  12. 从模板模式到JdbcTemplate
  13. 使用描述符实现property功能
  14. java0424 wen 集合框架2
  15. Creating and using a blendspace in c++
  16. [TJOI2017]城市
  17. 再谈一次关于Java中的 AIO(异步IO) 与 NIO(非阻塞IO)
  18. 【Java】JVM(六)虚拟机字节码执行引擎
  19. Spring Boot REST
  20. 作业1-MathExam

热门文章

  1. 费劲周折的Haskell开发环境搭建过程
  2. Java常用类StringBuffer详解
  3. English--倒装句
  4. 2019-09-16 PHP CURL CURLOPT参数说明(curl_setopt)
  5. 3 Linux文件基本属性
  6. flink 安装及wordcount
  7. Linux CentOS 6.5 ifconfig查询不到ip简单解决方法
  8. MySQL数据逻辑备份
  9. 盛科(Centec)交换机 SmartConfig 特性
  10. 一天撸完《 Learning Jupyter 5 2nd Edition》