Socket.io地理位置callback

使用Google地图API,我有几行代码可以在按下allow后检索用户的位置。

var geocoder = new google.maps.Geocoder; navigator.geolocation.getCurrentPosition(function(position) { var pos = { lat: position.coords.latitude, lng: position.coords.longitude - .12 }; map.setCenter(pos); var realCoords = { lat: position.coords.latitude, lng: position.coords.longitude }; geocoder.geocode({'location': realCoords}, function(results, status) { if (status === 'OK') { userCity = results[0].address_components[2].long_name; } }); }); 

问题是,我有一个socket.io事件,当用户连接到页面,并需要从地理位置使用用户的城市发射权利。 不幸的是,这导致城市输出未定义,因为套接字函数在地理定位完成之前运行,查找用户的位置。

有反正使用callback,以便套接字事件只运行用户的位置后发现? 我们不想使用超时,因为这是同步的,并且时间量取决于该用户的地理位置有多快。

 io.on("connection", function(socket) { console.log("Made socket connection", socket.id); io.sockets.emit("showDeals", foodCount); socket.on("addFood", function(data) { foodCount.push(data); io.sockets.emit("addFood", data); }); socket.on("upvote", function(data) { foodCount.forEach(function(element) { if (element.name == data.name) { element.votes++; } }); foodCount.sort(function(a, b) { return parseInt(b.votes) - parseInt(a.votes); }); io.sockets.emit("upvote", foodCount); }); }); 

要注意的是那个

 io.sockets.emit("showDeals", foodCount);