Испытывая Google Javascript API с Google+, я наткнулся на загадку.
var response;
var request = gapi.client.request({
'path': '/plus/v1/people/' + "THEUSERID",
'params': {}});
request.execute(function(resp){});
Функция execute (gapi.client.HttpRequest.execute) принимает один аргумент; функция обратного вызова. Однако я не хочу обрабатывать данные сразу после их получения, я хочу сохранить их в переменной response
, которую я объявил в начале кода. Есть ли способ использовать аргумент обратного вызова для хранения ответа?
Простите, если есть очевидное решение, я немного новичок в JavaScript.
EDIT:
Было предложено, чтобы функция обратного вызова была следующей:
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. Мне нужен способ проверить это, чтобы код после функции execute не вызывался до тех пор, пока не будет запущена функция обратного вызова.