TW实习日记:第13天
Posted waterape
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TW实习日记:第13天相关的知识,希望对你有一定的参考价值。
昨天困扰的问题终于解决了。因为是百度地图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
以上是关于TW实习日记:第13天的主要内容,如果未能解决你的问题,请参考以下文章