У меня есть функция, которая вызывает другую функцию, и я хочу, чтобы сохранить возвращаемый результат в переменном:Scoping проблемы с яваскриптом обратного вызова
function trigger_gridly(){
var channel_name = get_channel_name();
}
Вызванная функция запускает запрос AJAX, которая вызывает обратный вызов приема JSON:
function get_channel_name(){
var channel_name;
$.getJSON(APPLICATION_DOMAIN + "channels/new.json?callback=?", null, handleJson);
}
function handleJson(channel){
var channel_name = channel.name;
return channel_name;
}
проблема заключается в том, что channel_name
в trigger_gridly()
не получает значение channel_name
в функции обратного вызова handleJson
. Как я могу предоставить данные в обратном вызове функции trigger_gridly()
?
Вы думаете об этом в синхронном режиме. Выполнение асинхронного запроса и наличие простой функции getter, которая возвращает значение, невозможно, если значение не было предварительно заполнено. Что именно ты пытаешься сделать? Вероятно, для этого нужно больше ориентироваться на обратную связь, чем функция trigger_gridly. – Corbin
Я пытаюсь получить объект json на стороне клиента из другого домена, чем сервер. –
И что с этим делать? Возможно, вы должны передать свою функцию, которая фактически выполняет обработку как обратный вызов. В противном случае, как вы узнаете, когда переменная была установлена и когда она не была? (Без использования чего-то взломанного, как бесконечный цикл, который ломается, когда он установлен или что-то еще.) – Corbin