我在for循环中需要调用一个异步的函数,数据量太多操作时间很长,导致我循环后面的代码出现问题.
我想要js的数组指针操作的函数
我知道php里就有Key() Next() Prev()等,但js里不知道
下面是代码:
function gcgetlocation(point,i){ //获取point地理位置
var gc = new BMap.Geocoder();
gc.getLocation(point, function(rs){
//var addComp = rs.addressComponents;
//console.log(addComp.province+addComp.city +addComp.district +addComp.street +addComp.streetNumber);
if(rs.address ==''){
markerguowai.push(markerarr[i]);
}else{
markerguonei.push(markerarr[i]);
}
});
}
function createjifei(){
var html1="
查询结果:
";html1 +="
本次查询一共查询到数据"+markerarr.length+"条
";html1 +="其中国内数据"+markerguonei.length+"条";
html1 +="国外数据"+markerguowai.length+"条";
html1 +="经纬度为0的数据"+markerz.length+"条";
$("#jifeitab").html(html1);
}
function ajaxjifei(){
markerz=[]; //经纬度为0对的点
markerguonei=[]; //国内的点
markerguowai=[]; //国外的点
var deviceid = $("#sdeviceid").val();
var startyue = $("#startyue").val()+" 00:00:00";
var endyue = $("#endyue").val()+" 00:00:00";
$.ajax({
url:'?method=index/admin/jifei',
dataType:'json',
type:'post',
data:{deviceid:deviceid,timeStart:startyue,timeEnd:endyue},
success:function(res){
console.log(res);
markerarr =res;
for(var item in markerarr){
if(markerarr[item].lat==0 ||markerarr[item].lng==0){
markerz.push(markerarr[item]);
}else{
var t = GPS.gcj_encrypt(markerarr[item].lat, markerarr[item].lng);
t = GPS.bd_encrypt(t.lat, t.lng); //经纬度转换 转换成百度经纬度
var point = new BMap.Point(t.lng,t.lat);
gcgetlocation(point,item);
}
}
},error:function(res){
console.log(res);
}
});
}
$(".jifei").click(function(){
ajaxjifei();
//createjifei();
setTimeout(createjifei,60000);
});