昨天困扰的问题终于解决了。因为是百度地图api提供的函数,所以这个解决办法并不适用于所有异步请求,仅仅针对百度地图api的调用接口函数和回调函数。有两种解决方法可以解决百度地图api中常出现的请求回调的顺序问题,背景:方法A用于搜索获得两点间导航路线的点集合,方法B用于获得数据,调用方法B时将处理点集合的方法C放入参数列表。需要循环n次获得n+1组两点之间的点集合,因为种种原因获取的点集合和搜索顺序并不一致。框架是vue.js。

  解决方案1:可以使用一个定时器来定时发送,并且设置一个标志位,只有标志位为真才进行请求。

  切记在回调函数内将标志位设置为true!

  切记在回调函数内将标志位设置为true!

  切记在回调函数内将标志位设置为true!

  以下是调用函数的伪代码,回调函数就不写了:

let self = this;
let i = 0;
let flag = true;
let interval = window.setInterval(function () {
if(flag){//当标志位为真
if(i > self.points.length - 1){//限定条件
window.clearInterval(interval);//清除定时器
return ;
}
//以下为需要定时做的请求
let point0 = self.points[i];
let point1 = self.points[i+1];
let m = new BMap.Marker(point0);
self.map.addOverlay(m);
driving.search(point0, point1);
}
flag = false;//修改标志位
},200);//设置发送间隔

  解决方案2:请求代码块只进行一次,在回调函数结尾处进行请求,同时计数,达到限定条件则停止发送请求。代码就不贴了,相信应该明白了。

  方案1和方案2本质是一样的,通过一种方式得知回调函数被执行,再发送请求,区别就在于实现方式,一个是直接让回调函数来发送请求,一个是通过定时器。没想到昨天怎么想也想不出来的问题今天竟然搞明白了,因为百度地图api的特殊性,导致这两个方案不具有普适性,如果以后遇到更难的需求,就再说吧。今天还完成了之前挖的坑之一:整理搭建ssm框架的步骤和框架代码。并且从今天开始,日常烧香拜佛写后端代码,真的不想再写前端和js了!

  挖坑清单:

  1. Vue缓存机制、生命周期和钩子函数
  2. 使用自用组件编写页面
  3. git学习与常用命令记录(最后的整理)
  4. 看书和复习

Terence Xie

2018.8.1 周三 20:06

最新文章

  1. LINUX常见问题
  2. zlog学习笔记(zc_profile)
  3. 字体 font typograph
  4. [转]BeginInvoke和EndInvoke方法浅析
  5. 《UNIX网络编程》之多客户连接服务端,可重用套接字对
  6. 基于DateTime Picker修改成类似旅游网站出发日期选择的功能
  7. tarjan+缩点
  8. Java进阶(七)正确理解Thread Local的原理与适用场景
  9. 解决VS2017不连接visual studio emulator for android
  10. 三种Webpack打包方式
  11. 解决方法:CentOS7用yum安装软件显示错误:cannot find a valid baseurl for repo: base/7/x86_64
  12. oracle&mysql配置
  13. 02:golang基础
  14. abap开发中update module 的创建和使用
  15. WebService之Axis2(1):用POJO实现0配置的WebService
  16. L-BFGS
  17. poj 1390 区间dp
  18. struts2核心和工作原理
  19. JConsole手册
  20. 洛谷 - P1987 - 摇钱树 - dp - 贪心

热门文章

  1. ICT测试点是干什么的, 怎么设置!
  2. ARM v7-A 系列CPU的MMU隐射分析
  3. TortoiseSVN 分支创建与合并
  4. GoldenGate -- OGG EXTRACT进程 OGG-00446 报错
  5. Spring知识点小结(三)
  6. Git命令行和Xcode结合使用(我来告诉你这行代码谁写的)
  7. js数组去重(多种写法)
  8. day 25 模块与包
  9. char[] 转换string时的自动截断问题
  10. Active MQ C++实现通讯记录