Очередность выполнения событий
Здравствуйте.
Хочу вызывать метод и получать от него данные, то есть: 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); |
Вопрос задан неверно
ты просто немного не понимаешь как работает механизм ajax запросов У тебя есть функция .getCode = function(phone) { $.get( .... ) } важно понимать что $.get() это вызов функции с определенными параметрами. Последним параметром передается функция которая будет вызвана в будущем когда будет получен ответ от сервера т.е. к тому моменту getCode уже успеет завершится т.е. .getCode = function(phone) { $.get( .... ) }просто вызывает $.get( .... ) и завершается и не возвращает никакого значения |
Как тогда сделать как я хочу? никак?
То есть придется все писать в page.js? |
Как я понимают твоя задача в том что бы сделать определенные действия после того как получишь нужный тебе json
1. ты можешь делать нужную тебе работу в функции обратного вызова (callback) 2. ты можешь вызвать функцию которая сделает нужные беде действия 3. ты можешь выполнить запрос сихронно (никогда так не делай) т.е. будет остановлена любая активность на странице пока не будет получен ответ от сервера. после этого скрипт продолжит свое выполнение |
Часовой пояс GMT +3, время: 04:44. |