Я вижу много ответов в StackOverflow, в которых говорится, что JavaScript выполняет код последовательно, но на самом деле я вижу, что мой собственный JavaScript этого не делает.Из следующего кода:
function centre_map(lat, lng, zoom_level) {
alert('centre_map');
map = new GMap2(document.getElementById('map_canvas'));
var latlng = new GLatLng(lat, lng);
map.setCenter(latlng, zoom_level);
}
function add_markers_within_bounds() {
alert('add_markers_within_bounds');
// add numerous BLUE markers within map bounds using MarkerClusterer
}
function add_marker(lat, lng, place_name, grid, county) {
alert('add_marker');
// add one ordinary RED Google Maps marker
}
centre_map('{{lat}}', '{{lng}}', 12);
add_markers_within_bounds('{{grid}}', '{{place_name}}');
add_marker('{{lat}}', '{{lng}}', '{{place_name}}', '{{grid}}', '{{county}}');
Я получаю следующую последовательность событий:
- 'centre_map' alert
- 'add_markers_within_bounds' alert
- предупреждение 'add_marker'
- отдельный красный маркер появляется на карте (т.е. рендеринг add_marker)
- несколько синих маркеров появляются на карте (то есть рендеринг add_markers_within_bounds)
Почему'add_markers_within_bounds
завершено до начала add_marker
: и как я могу это сделать?
Я знаю, что одним из способов может быть вызов add_marker
из в пределах add_markers_within_bounds
, но по разным причинам я бы предпочел оставить это как отдельную функцию.