使用google chrome的console功能进行javascript测试,var r,i;
s=""//一堆用户名的数组
r=""
for(i = 0;i<10;i++){
nova_request(function(response){
r=r+i+"|"
},'/user/chk/',{key: 'username',vo: s[i]},'get');
}r的结果10|10|10|10|10|10|10|10|10|10|希望r的结果0|1|2|3|4|5|6|7|8|9|javascript回调函数
s=""//一堆用户名的数组
r=""
for(i = 0;i<10;i++){
nova_request(function(response){
r=r+i+"|"
},'/user/chk/',{key: 'username',vo: s[i]},'get');
}r的结果10|10|10|10|10|10|10|10|10|10|希望r的结果0|1|2|3|4|5|6|7|8|9|javascript回调函数
http://www.cnblogs.com/rainman/archive/2009/05/04/1448899.html中的第4部分
(function(x){
nova_request(function(response){
r=r+x+"|"
},'/user/chk/',{key: 'username',vo: s[x]},'get');
})(i)
}
只有nova_request执行完毕才会进行下一次循环!
楼主没有贴出nova_request的具体代码来,估计楼主在nova_request里有异步,那么:没有执行完的就不是nova_request,而是每次执行完nova_request进行回调的函数:function(response){...}。十次循环循环瞬间执行完毕后i值变成了10,而此时累计起来的10个回调才依次执行(异步需要与后台通信,回调函数需要等待响应才能执行,响应的过程中程序正常往下运行。因为这里的循环非常简单,所以在第一个回调响应之前10次循环就全部执行完了),因为i已经等于10,所以结果就会是你看到的“10|10|....”。
只有nova_request执行完毕才会进行下一次循环!
楼主没有贴出nova_request的具体代码来,估计楼主在nova_request里有异步,那么:没有执行完的就不是nova_request,而是每次执行完nova_request进行回调的函数:function(response){...}。十次循环循环瞬间执行完毕后i值变成了10,而此时累计起来的10个回调才依次执行(异步需要与后台通信,回调函数需要等待响应才能执行,响应的过程中程序正常往下运行。因为这里的循环非常简单,所以在第一个回调响应之前10次循环就全部执行完了),因为i已经等于10,所以结果就会是你看到的“10|10|....”。累计起来的回调函数个数有没有上限?
只有nova_request执行完毕才会进行下一次循环!
楼主没有贴出nova_request的具体代码来,估计楼主在nova_request里有异步,那么:没有执行完的就不是nova_request,而是每次执行完nova_request进行回调的函数:function(response){...}。十次循环循环瞬间执行完毕后i值变成了10,而此时累计起来的10个回调才依次执行(异步需要与后台通信,回调函数需要等待响应才能执行,响应的过程中程序正常往下运行。因为这里的循环非常简单,所以在第一个回调响应之前10次循环就全部执行完了),因为i已经等于10,所以结果就会是你看到的“10|10|....”。累计起来的回调函数个数有没有上限?
没有上下限之说,回调函数的个数=for循环的次数
你的for循环是for(i = 0;i<10;i++){..., 那么回调函数的个数当然就是10
只有nova_request执行完毕才会进行下一次循环!
楼主没有贴出nova_request的具体代码来,估计楼主在nova_request里有异步,那么:没有执行完的就不是nova_request,而是每次执行完nova_request进行回调的函数:function(response){...}。十次循环循环瞬间执行完毕后i值变成了10,而此时累计起来的10个回调才依次执行(异步需要与后台通信,回调函数需要等待响应才能执行,响应的过程中程序正常往下运行。因为这里的循环非常简单,所以在第一个回调响应之前10次循环就全部执行完了),因为i已经等于10,所以结果就会是你看到的“10|10|....”。累计起来的回调函数个数有没有上限?
没有上下限之说,回调函数的个数=for循环的次数
你的for循环是for(i = 0;i<10;i++){..., 那么回调函数的个数当然就是10但是我这两天写一个程序的时候,for循环次数是18次,每次执行一个回调函数,函数结果写到一个全局数组里面。但是后面使用这个数组的时候里面总是只有11个左右的值,而如果每次执行回调函数的时候都加一个alert(),数组里的值就都有了,请问这个是什么情况?
只有nova_request执行完毕才会进行下一次循环!
楼主没有贴出nova_request的具体代码来,估计楼主在nova_request里有异步,那么:没有执行完的就不是nova_request,而是每次执行完nova_request进行回调的函数:function(response){...}。十次循环循环瞬间执行完毕后i值变成了10,而此时累计起来的10个回调才依次执行(异步需要与后台通信,回调函数需要等待响应才能执行,响应的过程中程序正常往下运行。因为这里的循环非常简单,所以在第一个回调响应之前10次循环就全部执行完了),因为i已经等于10,所以结果就会是你看到的“10|10|....”。累计起来的回调函数个数有没有上限?
没有上下限之说,回调函数的个数=for循环的次数
你的for循环是for(i = 0;i<10;i++){..., 那么回调函数的个数当然就是10但是我这两天写一个程序的时候,for循环次数是18次,每次执行一个回调函数,函数结果写到一个全局数组里面。但是后面使用这个数组的时候里面总是只有11个左右的值,而如果每次执行回调函数的时候都加一个alert(),数组里的值就都有了,请问这个是什么情况?
“回调函数的个数=for循环次数”这个是没有问题的,你加上alert能全部弹出也再次证明了。
至于数组里不全,那说明数组或者数组处理上有问题~~最好贴下代码....
只有nova_request执行完毕才会进行下一次循环!
楼主没有贴出nova_request的具体代码来,估计楼主在nova_request里有异步,那么:没有执行完的就不是nova_request,而是每次执行完nova_request进行回调的函数:function(response){...}。十次循环循环瞬间执行完毕后i值变成了10,而此时累计起来的10个回调才依次执行(异步需要与后台通信,回调函数需要等待响应才能执行,响应的过程中程序正常往下运行。因为这里的循环非常简单,所以在第一个回调响应之前10次循环就全部执行完了),因为i已经等于10,所以结果就会是你看到的“10|10|....”。累计起来的回调函数个数有没有上限?
没有上下限之说,回调函数的个数=for循环的次数
你的for循环是for(i = 0;i<10;i++){..., 那么回调函数的个数当然就是10但是我这两天写一个程序的时候,for循环次数是18次,每次执行一个回调函数,函数结果写到一个全局数组里面。但是后面使用这个数组的时候里面总是只有11个左右的值,而如果每次执行回调函数的时候都加一个alert(),数组里的值就都有了,请问这个是什么情况?
“回调函数的个数=for循环次数”这个是没有问题的,你加上alert能全部弹出也再次证明了。
至于数组里不全,那说明数组或者数组处理上有问题~~最好贴下代码....
function codeAddress() {
var geocoder = new google.maps.Geocoder();
var reLocation = new google.maps.LatLng();
geocoder.geocode({ 'address': stationArr[j]}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
locationArr[j] = results[0].geometry.location;
}else{
locationArr[j] = null;
}
j++;
if (j < stationArr.length){
codeAddress();
}else{
for(k=0;k<stationNum;k++){
if(locationArr[k]==null)locationArr[k]=locationArr[k-1];
}
midN=Math.ceil(stationNum/2);
var mapOptions = {
center: locationArr[midN],
zoom: 5,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);
var lineCoordinates = [locationArr
// new google.maps.LatLng(39.929748,116.404052),
// new google.maps.LatLng(34.374045,108.938842),
// new google.maps.LatLng(31.292634,121.475401)
];
var lineSymbol = {path: google.maps.SymbolPath.FORWARD_OPEN_ARROW};
var line = new google.maps.Polyline({
path: lineCoordinates,
icons: [{icon: lineSymbol,offset: '100%'}],
strokeColor: "#0000FF",
strokeOpacity: 0.6,
map: map
});
}
});
}
codeAddress();功能就是将一个数组里面的地理位置进行编码,然后再地图上绘出折线位置超过11个后面的地理编码就不进行了,
stationArr这个参数值具体是啥?
stationNum这个变量貌似也没有声明?