Javascript.RU

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

Очередность выполнения событий
Здравствуйте.

Хочу вызывать метод и получать от него данные, то есть:
Api.js
function Api(token, phone) {
    this.access_token = token;
    this.access_phone = phone;
    
    this.getCode = function(phone) {
    	$.get("http://link/method/getCode", {key: "key", phone: phone}, function(data){
    		data = JSON.parse(data);
    		console.log(data); // => Выводит ответ, все ок
    		
    		return data;
    	});
    }
}


Page.js
api = new Api("", "");
json = api.getCode(phone);
console.log(json); // => возвращает undefined


Так получается потому что
console.log(json);

не ждет, пока getCode выполнит свой запрос.

Скажите, пожалуйста, как сделать, чтобы сначала выполнилось это
json = api.getCode(phone);

и только потом
console.log(json);
Ответить с цитированием
  #2 (permalink)  
Старый 02.08.2014, 17:29
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Вопрос задан неверно
ты просто немного не понимаешь как работает механизм ajax запросов

У тебя есть функция
.getCode = function(phone) { $.get( .... ) }

важно понимать что $.get() это вызов функции с определенными параметрами.
Последним параметром передается функция которая будет вызвана в будущем когда будет получен ответ от сервера
т.е. к тому моменту getCode уже успеет завершится
т.е.
.getCode = function(phone) { $.get( .... ) }
просто вызывает $.get( .... ) и завершается и не возвращает никакого значения
Ответить с цитированием
  #3 (permalink)  
Старый 02.08.2014, 17:34
Интересующийся
Отправить личное сообщение для Fedya Посмотреть профиль Найти все сообщения от Fedya
 
Регистрация: 07.09.2012
Сообщений: 20

Как тогда сделать как я хочу? никак?

То есть придется все писать в page.js?
Ответить с цитированием
  #4 (permalink)  
Старый 02.08.2014, 17:47
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Как я понимают твоя задача в том что бы сделать определенные действия после того как получишь нужный тебе json
1. ты можешь делать нужную тебе работу в функции обратного вызова (callback)
2. ты можешь вызвать функцию которая сделает нужные беде действия
3. ты можешь выполнить запрос сихронно (никогда так не делай) т.е. будет остановлена любая активность на странице пока не будет получен ответ от сервера. после этого скрипт продолжит свое выполнение
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очередность выполнения 2х событий zilker Events/DOM/Window 11 20.12.2012 17:17
Какой есть обработчик событий, который будет запускаться после выполнения всего кода? KamalovRadik jQuery 12 08.11.2011 07:14
Очередность событий tarya AJAX и COMET 2 29.03.2011 03:22
Скопировать обработчики событий с одного элемента на другой. Jurasmi Events/DOM/Window 3 10.11.2010 19:03
Приостановка выполнения событий Vteam Events/DOM/Window 6 14.12.2009 00:25