昨天困扰的问题终于解决了。因为是百度地图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

TW实习日记:第13天的更多相关文章

  1. TW实习日记:前三天

    今天是2018年7月20号,周五.从周一开始实习到现在,终于想起来要写日记这种东西了,可以记录一下自己这一天所学所做所知也是蛮不错的.先简单总结一下自己的大学生活吧,算是多姿多彩,体验了很多东西.在大 ...

  2. TW实习日记:第九天

    这两天有点忙,要改前端网页和加需求上去.所以昨天说的Vue缓存机制也没看,所以打算现在列个挖了的坑的清单: Vue缓存机制.生命周期和钩子函数 使用项目组自用组件来重写静态页面 SSM框架搭建.整合流 ...

  3. TW实习日记:第31-32天

    不知不觉的,实习的净工作天数,已经都超过一个月了.因为对工作内容不是很满意,所以打算月底离职,也不知道是公司太缺人还是我真的能干活,领导竟然三番两次找我让我再考虑...明天又要找我了,哎...随机应变 ...

  4. TW实习日记:第20-21天

    为什么上周五没写呢,因为上周五一直在熟悉业务流程...根本不会写一些复杂的业务代码,因为没有业务流程图!!!在学校的上需求分析和UML建模课的时候,还有软件工程课的时候,想着这都什么鬼啊,听来干嘛,写 ...

  5. TW实习日记:第四天

    第四天 早上第一件事就是和组长说前一天的需求的事,简而言之就是两个导航栏不属于一个标签内,自定义导航栏属于<body>下的<header>,微信顶部的则是<head> ...

  6. TW实习日记:第十天

    今天任务很简单,就是出品项目的时间轴显示页面和动态路由设置.其实时间轴页面很快就做完了,在做完处理完数据之后,然而有很多细节需要打磨,这就又考验了我面向搜索引擎编程的能力,根据需求百度了很多css的样 ...

  7. TW实习日记:第八天

    今天早上主要是接着做昨天的微信端网页预览附件,听同事说当打包代码放入服务器上后,就不存在跨域问题了,也就懒得自己写接口了,那么就希望自己能一次过吧...结果写着写着,发现开发文档中关于预览文件的方法, ...

  8. TW实习日记:第七天

    今天早上,将项目的两个企业微信接口:登录和应用消息发送接口,做了最后的收尾工作,把目前我能解决的问题算是基本都解决了.早上还开了一个会,大意是组长封装了许多组件叫我们使用,在不断的使用中打磨组件的可用 ...

  9. TW实习日记:第六天

    今日的一整天都是在开发微信相关的接口,因为项目的系统是嵌在企业微信中,所以不可避免的要产生微信UserID和企业系统ID的匹配关系,那么就需要用手机号或是邮箱这种两边都存在的唯一参数进行匹配.然后再将 ...

随机推荐

  1. Flex控件之repeater和radioButton应用

    代码:http://www.cnblogs.com/modou/articles/2108346.html <?xml version="1.0" encoding=&quo ...

  2. java 编写小工具 尝试 学习(七)

    1.在java 编写小工具 尝试 学习(六)里学会了,控件 的随意摆放, 以及大小(x,y,width,height),又根据前面学习的按钮 被点击 的事件监控 的方法 ,点击 按钮 在显示区域显示“ ...

  3. php编程零基础如何快速入门。门头沟编程

    昨天遇到一个人,说知道thinktphp,不过几年前的事了. 我先跟他讲了下,xyhcms后台功能,各个版块,以及数据库都介绍了一下. 跟他说了一个功能现场实现,说了实现方法. 然后上机操作,发现他表 ...

  4. 时间比较方法DateTime.Compare

    格式:DateTime.Compare(datetime1, datetime2) 参数为时间格式,为第一个参数比较第二个参数,返回小于0的值,等于0或大于0的值. 实例: string st1 = ...

  5. Deferred Lighting

    Deferred lighting separate lighting from rendering and make lighting a completely image-space techni ...

  6. iOS 自定义任意形状加载进度条(水波纹进度条)

    1. 项目中要做类似下面的加载动画: 先给出安卓的实现方式 2.iOS的实现方式参考了下面两位的,感谢. 以任意底部图片为背景的加载动画 和 水波纹动画 最后附上自己的demo

  7. Pycharm常用的快捷键

    常用快捷键: Ctrl + D              复制选定的区域或行 Ctrl + Y               删除选定的行 Ctrl + Alt + L         代码格式化 Ct ...

  8. Linux phpmailer发送邮件失败的解决方法

    (本地windows phpmailer发送ok 放到linux发送失败) 原因:linux  通过465端口进行更安全的SMTPS协议发送邮件 windows 是基于smtp  25端口的 因此 可 ...

  9. 慕课笔记-JavaScript正则表达式

    目录 慕课笔记-JavaScript正则表达式笔记 概述 RegExp对象 修饰符 元字符 字符类 范围类 预定义类 预定义字符 边界 量词 贪婪模式 分组 或(使用竖线表示) 反向引用 忽略分组 前 ...

  10. 全志A64 QT移植

    1. 把编译工具 gcc-linaro-aarch64.tar.xz 添加到环境.bashrc 中 2. 下载 tslib-1.4.tar.gz ,libiconv-1.15.tar.gz ,qt-e ...