[英]How do I read a variable from another function?
In the following code, it seems that the function initialize(), once triggered by socket.on('results') is unable to read the value of "array". 在下面的代码中,似乎函数initialize()一旦由socket.on('results')触发,便无法读取“ array”的值。
block content
script.
function initialize() {
var mapOptions = {
center: { lat: -30, lng: 150},
};
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
setMarkers(map, array);
}
function setMarkers(map, locations) {
for (var i = 0; i < locations.length; i++) {
var location = locations[i];
var myLatLng = new google.maps.LatLng(location[1], location[2]);
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: location[0]
});
}
}
google.maps.event.addDomListener(window, 'load', initialize);
div(id="map-canvas")
script.
var socket = io.connect('http://localhost:4000');
socket.on('results', function(results) {
var array = [];
results.forEach(function(item){
name = item.name;
coordinates = item.location.coordinate;
array.push([name, coordinates.latitude, coordinates.longitude]);
});
initialize();
});
Simple pass the array as a parameter when you call the initialize function. 调用初始化函数时,只需将数组作为参数传递即可。
initialize(array);
Them, in the function initialize: 在函数中初始化它们:
function initialize(array) {REST OF THE CODE}
All code: 所有代码:
block content
script.
function initialize(array) {
var mapOptions = {
center: { lat: -30, lng: 150},
};
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
array = array || [];
setMarkers(map, array);
}
function setMarkers(map, locations) {
for (var i = 0; i < locations.length; i++) {
var location = locations[i];
var myLatLng = new google.maps.LatLng(location[1], location[2]);
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: location[0]
});
}
}
google.maps.event.addDomListener(window, 'load', initialize);
div(id="map-canvas")
script.
var socket = io.connect('http://localhost:4000');
socket.on('results', function(results) {
var array = [];
results.forEach(function(item){
name = item.name;
coordinates = item.location.coordinate;
array.push([name, coordinates.latitude, coordinates.longitude]);
});
initialize(array);
});
array variable is not visible inside initialize function. 数组变量在初始化函数中不可见。 It is closured in callback anonymous function.
它在回调匿名函数中关闭。 I propose to pass array as argument:
我建议将数组作为参数传递:
block content script. function initialize(array) { var mapOptions = { center: { lat: -30, lng: 150}, }; var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); array = array || []; setMarkers(map, array); } function setMarkers(map, locations) { for (var i = 0; i < locations.length; i++) { var location = locations[i]; var myLatLng = new google.maps.LatLng(location[1], location[2]); var marker = new google.maps.Marker({ position: myLatLng, map: map, title: location[0] }); } } google.maps.event.addDomListener(window, 'load', initialize); div(id="map-canvas") script. var socket = io.connect('http://localhost:4000'); socket.on('results', function(results) { var array = []; results.forEach(function(item){ name = item.name; coordinates = item.location.coordinate; array.push([name, coordinates.latitude, coordinates.longitude]); }); initialize(array); });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.