存储来自Google JavaScript API请求的响应

Tan*_*aki 4 javascript callback google-plus

在使用Google+试用Google的Javascript API时,我碰到了一个障碍.

var response;
var request = gapi.client.request({
    'path': '/plus/v1/people/' + "THEUSERID", 
    'params': {}});
request.execute(function(resp){});
Run Code Online (Sandbox Code Playgroud)

执行函数(gapi.client.HttpRequest.execute)只接受一个参数; 回调函数.但是,我不希望在收到数据后立即处理数据,我想将它存储在response我在代码开头声明的变量中.有没有办法使用回调参数来存储响应?

请原谅我,如果这有一个明显的解决方案,我对JavaScript有点新意.

编辑:有人建议回调函数如下:

request.execute(function(resp){response = resp;});
Run Code Online (Sandbox Code Playgroud)

然而,这个功能发生了一些奇怪的事情.这是我用来测试的代码:

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);
Run Code Online (Sandbox Code Playgroud)

控制台输出的内容如下:

RESPONSE:
undefined
GET https://www.googleapis.com/plus/v1/people/104815258973759324455?key=XXXXXXX
RESP:
({theactualjsondatathatIreceivedfromthecall})
Run Code Online (Sandbox Code Playgroud)

显然,代码继续执行/之前/可以调用执行回调函数.我需要一种方法来检查这一点,以便在运行回调函数之前不会调用execute函数之后的代码.

abr*_*ham 6

request.execute(function(resp){
  response = resp;
  afterExecute();
});
function afterExecute() {
  // this will not fire until after the response has been set.
}
Run Code Online (Sandbox Code Playgroud)