Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.04.2016, 20:57
Интересующийся
Отправить личное сообщение для max_fruit Посмотреть профиль Найти все сообщения от max_fruit
 
Регистрация: 08.04.2016
Сообщений: 10

Проблема с областью видимости.
Всем привет! Пытаясь работать с VK open API, столкнулся вот с какой задачей:
Почему не получается отобразить startFrom в консоли?
var startFrom = ""; // Глобальная переменная
// делаю запрос к vk api
    function s1() {  VK.api("newsfeed.search", {"v":"5.50","q":"привет", "extended":"1", "count":"200", "fields":"photo_50"}, function(data) { 
// получаю response и извлекаю нужные данные
             
        startFrom = data.response.next_from; // next_from - номер следующей страницы, который используется для извлечения максимального количества постов
       // извлечение параметров профиля
        var profilesCount = data.response.profiles.length;
                            
                            var profilesStr = '';
                            
                            for (var i=0; i<profilesCount; i++) {
                                
                                profilesStr +='<img src=' + data.response.profiles[i].photo_50 + '>' + '<a href="https://vk.com/id' + data.response.profiles[i].id + '"' + '>' + data.response.profiles[i].first_name + ' ' + data.response.profiles[i].last_name + '</a>' +  '<br/>';
                                
                            
    document.getElementById('friends_list').innerHTML = profilesStr + startFrom; // вставляю данные в html
                            }

    });
                          
                  }
    
$.when(s1()).done(function () {console.log(startFrom);}); // пытаюсь сделать последовательный вызов, при котором следующая функция выполнится только после завершения предыдущей


В html startFrom вставляется без проблем, но вот в консоль я его значение вывести не могу (пишет Uncaught ReferenceError: starFrom is not defined). И еще один момент: если
console.log(starFrom); заменить, например, на alert("Hello world!");, то alert выполнится, но до того, как в html будут вставлены результаты запроса, а если alert(startFrom), то всплывает пустое окно. ЧЯДНТ?

Последний раз редактировалось max_fruit, 14.04.2016 в 08:20.
Ответить с цитированием
  #2 (permalink)  
Старый 18.04.2016, 18:35
Интересующийся
Отправить личное сообщение для max_fruit Посмотреть профиль Найти все сообщения от max_fruit
 
Регистрация: 08.04.2016
Сообщений: 10

Уже давно ответил на свой вопрос, но тут подумал, что надо бы и сюда написать ответ. Я понимаю, что это элементарные вещи (но не для меня ), но вдруг кому-то пригодится решение.
var startFrom; // Всё та же глобальная переменная.

function s1() { Vk.api({/* Всё, что написал выше*/}, function(data) {
startFrom = data.response.next_from;
// Далее идет кусок кода из вопроса.

function s2() {      //Тут же, внутри функции s1, создаю еще одну     функцию
console.log(startFrom); // Теперь всё работает
}
});
} // Функция s1 закончилась
s1();

Последний раз редактировалось max_fruit, 18.04.2016 в 18:37.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу помощи, вызов нескольких функций из input, ajax alagor Общие вопросы Javascript 2 10.02.2016 17:35
Как в функции объявить вызов других функций, еще не определенных? lonleystranger Общие вопросы Javascript 6 26.11.2013 11:16
Вызов локальной функций внутри переменной gibigate Общие вопросы Javascript 1 20.03.2013 14:47
Асинхронный вызов толстых функций Rogov Dmitry Events/DOM/Window 15 02.08.2011 14:11
Вызов функций iframe из кода Firefox-расширения Jury Firefox/Mozilla 0 03.05.2011 13:09