Эта функция не может возвращать значение, поскольку вы используете шаблон наблюдателя, который устанавливает асинхронную логику для кода.Проще говоря, в момент, когда ваша функция coord()
вернется, значение еще не достигнуто.
Чтобы справиться с этим, обычно вы передаете функцию обратного вызова, а затем возобновляете вычисления там.
Объявите вашу функцию как:
function coord(callback)
, затем, после того как вы знаете желаемое значение, вызовите обратный вызов со значением:
callback.call(null, tube);
Сделайте это после вашего if { ... } else { ... }
такВаш обратный вызов вызывается как при успешном, так и при неудачном завершении (при сбое он пройдет undefined
, вы можете исправить его, объявив var tube = null
перед if
).
тогда вместо:
tubestation = coord();
назовите это так:
coord(function(tubestation) {
// continuation of your code here
});
Вы, вероятно, не сможете использовать document.write
со временииспользовать его было бы давно, но вы можете установить значение в качестве содержимого элемента, который вы уже сгенерировали.В ваших тегах есть jQuery, так что это довольно просто:
coord(function(tubestation) {
$('#tube_station').text(tubestation);
});
, если у вас есть <div id="tube_station"/>
где-то в вашем HTML.