Пробуя Google Javascript API с Google+, я столкнулся с проблемой.
var response;
var request = gapi.client.request({
'path': '/plus/v1/people/' + "THEUSERID",
'params': {}});
request.execute(function(resp){});
Функция выполнения (gapi.client.HttpRequest.execute) принимает один аргумент; функция обратного вызова. Однако я не хочу обрабатывать данные сразу после их получения, я хочу сохранить их в переменной response
, которую я объявил в начале кода. Есть ли способ использовать аргумент обратного вызова для хранения ответа?
Простите меня, если у этого есть очевидное решение, я немного новичок в JavaScript.
РЕДАКТИРОВАТЬ: было предложено, чтобы функция обратного вызова была следующей:
request.execute(function(resp){response = resp;});
Однако с функцией происходит нечто любопытное. Вот код, который я использовал для тестирования:
var response;
var request = gapi.client.request({
'path': '/plus/v1/people/' + userID,
'params': {}});
request.execute(function(resp){
console.log("RESP:");
console.log(resp);
response = resp;});
console.log("RESPONSE:");
console.log(response);
Консоль выводит следующее:
RESPONSE:
undefined
GET https://www.googleapis.com/plus/v1/people/104815258973759324455?key=XXXXXXX
RESP:
({theactualjsondatathatIreceivedfromthecall})
По-видимому, код продолжает выполняться до того, как может быть вызвана функция обратного вызова execute. Мне нужен способ проверить это, чтобы код после функции выполнения не вызывался до тех пор, пока не будет запущена функция обратного вызова.