有没有其他方法可以阻止setTimeout
的必要?
function initialize(){
$.get('test.xml', function(xml){
//do some stuff with xml like...
var icons = xml.documentElement.getElementsByTagName("icon");
for(var i = 0; i < icons.length; i++) {
var iconImage = icons[i].getAttribute("image"),
}
//do more things to create markers like...
markers.push(marker);
//try to add markers to map
//this will give an error
addMarkers(markers);
//setTimeout makes it work
setTimeout("addMarkers(markers)", 300);
//is there any way to avoid the timeout?
});
}
答案 0 :(得分:2)
很难说出错是什么,因为您没有提供您获得的错误或创建标记的代码。试图猜测,最可能发生的事情是,您运行以创建标记并可能初始化地图的代码不会同步运行,而是异步运行。如果涉及一些ajax调用肯定会出现这种情况,这意味着在调用最后一个javascript行时,地图/经理系统还没有准备就绪,但经过一段时间之后,确定在函数退出之后
为了避免setTimeout,其中会引入不必要的延迟并且很容易破坏,如果在某些条件下需要更多时间,你需要查看创建标记的代码并查看是否存在定义了一个回调/事件,标志着初始化过程的完成。