4
在嘗試使用Google的Javascript API時,我碰到了一個障礙。從Google JavaScript API請求中存儲響應
var response;
var request = gapi.client.request({
'path': '/plus/v1/people/' + "THEUSERID",
'params': {}});
request.execute(function(resp){});
execute函數(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函數之後的代碼。
這應該做到這一點。 OP,請記住,你的'response' var具有它所在函數的範圍(如果它在一箇中)。因此,如果您需要在此之外使用它,請務必移動聲明。 – shanabus 2012-02-28 02:30:08
這應該工作,是的,但它看起來execute()函數處理回調有點不同於我想的;我編輯了主要問題以反映問題。 – Tanaki 2012-02-28 03:01:27
回調最有可能是異步的。 – Ivan 2012-02-28 03:02:55