TW实习日记:第13天
2024-08-26 12:57:37
昨天困扰的问题终于解决了。因为是百度地图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了!
挖坑清单:
- Vue缓存机制、生命周期和钩子函数
- 使用自用组件编写页面
- git学习与常用命令记录(最后的整理)
- 看书和复习
Terence Xie
2018.8.1 周三 20:06
最新文章
- LINUX常见问题
- zlog学习笔记(zc_profile)
- 字体 font typograph
- [转]BeginInvoke和EndInvoke方法浅析
- 《UNIX网络编程》之多客户连接服务端,可重用套接字对
- 基于DateTime Picker修改成类似旅游网站出发日期选择的功能
- tarjan+缩点
- Java进阶(七)正确理解Thread Local的原理与适用场景
- 解决VS2017不连接visual studio emulator for android
- 三种Webpack打包方式
- 解决方法:CentOS7用yum安装软件显示错误:cannot find a valid baseurl for repo: base/7/x86_64
- oracle&;mysql配置
- 02:golang基础
- abap开发中update module 的创建和使用
- WebService之Axis2(1):用POJO实现0配置的WebService
- L-BFGS
- poj 1390 区间dp
- struts2核心和工作原理
- JConsole手册
- 洛谷 - P1987 - 摇钱树 - dp - 贪心