猿问

如何使用async await或者promise代替定时器呢?

使用的百度地图。必须先使用百度地图获取目标位置和使用百度地图获取目标位置,然后在通过百度地图的获取我和目标的位置。由于异步的原因,所以我使用了定时器解决,不过性能肯定不好,如何使用asyncawait或者promise代替定时器呢?
代码片段如下:
//获取目标位置
varmyGeo=newBMap.Geocoder();
//根据中地址名查经纬度
myGeo.getPoint(scope.targetname,function(point){
if(point){
scope.target=point;
}else{
toast("您选择地址没有解析到结果!");
}
},scope.cityname);
//获取我的位置
vargeolocation=newBMap.Geolocation();
geolocation.getCurrentPosition(function(r){
if(this.getStatus()==BMAP_STATUS_SUCCESS){
//alert('您的位置:'+r.point.lng+','+r.point.lat);
scope.myadd=newBMap.Point(r.point.lng,r.point.lat);
//console.log(scope.myadd,"我的位置")
}
else{
alert("定位失败");
}
},{enableHighAccuracy:true})
//获取我和目标的位置
setTimeout(function(){
if(scope.myadd!=""&&scope.target!=""){
varmap=newBMap.Map("l-map");
map.centerAndZoom(newBMap.Point(scope.target.lng,scope.target.lat),11);
varwalking=newBMap.WalkingRoute(map,{renderOptions:{map:map,panel:"r-result",autoViewport:true}});
walking.search(scope.myadd,scope.target);
}
},1000);
慕尼黑8549860
浏览 1070回答 2
2回答

侃侃尔雅

body,html,#allmap{width:100%;height:100%;overflow:hidden;margin:0;font-family:"微软雅黑";}地址解析//将地址解析结果显示在地图上,并调整地图视野//varmyGeo=newBMap.Geocoder();letpromiseTarget=newPromise((resolve)=>{myGeo.getPoint("霍营",function(point){if(point){resolve(point)}else{alert("您选择地址没有解析到结果!");}},"北京市");})vargeolocation=newBMap.Geolocation();letpromiseLocation=newPromise((resolve)=>{geolocation.getCurrentPosition(function(r){if(this.getStatus()==BMAP_STATUS_SUCCESS){resolve(r.point)}else{alert('failed'+this.getStatus());}},{enableHighAccuracy:true})})Promise.all([promiseTarget,promiseLocation]).then(([target,location])=>{console.log(target,location,5)//百度地图API功能varmap=newBMap.Map("allmap");map.centerAndZoom("北京",12);//初始化地图,设置城市和地图级别。alert('从大渡口区到江北区的距离是:'+(map.getDistance(target,location)).toFixed(2)+'米。');//获取两点距离,保留小数点后两位varpolyline=newBMap.Polyline([target,location],{strokeColor:"blue",strokeWeight:6,strokeOpacity:0.5});//定义折线map.addOverlay(polyline);//添加折线到地图上})

明月笑刀无情

你可以把获取地理位置的封装成一个方法,返回一个promise对象,然后在外部解析的地址的方法用asny,await去取获取地理位置的方法,这样就可以实现同步了。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答