我有一個JS對象,在一個屬性中我使用了一個函數表達式,在一個變量結果中。關閉中的變量
我需要填充結果變量並在processData被調用時返回它。
你能告訴我我在做什麼錯嗎?如果你簡要解釋一下這個問題並添加一個好的餅圖將會很棒。
$(document).ready(function() {
// General Settings
var
ApiSettings = {
clientId: 'aaa',
clientSecret: 'bbb'
}
ApiSettings.uriGetToken = 'https://ccc.com/oauth/token?grant_type=client_credentials&client_id=' + encodeURIComponent(ApiSettings.clientId) + '&client_secret=' + encodeURIComponent(ApiSettings.clientSecret);
ApiSettings.token = (function() {
var result; // I'm not able to set this variable
// Make an Ajax Request
$.getJSON(ApiSettings.uriGetToken, processData);
function processData(data) {
result = data.access_token;
}
return result;
})();
console.log(ApiSettings);
console.log(ApiSettings.uriGetToken);
console.log('FINAL:' + ApiSettings.token);
});
quentin,謝謝,但我相信它不是重複的,因爲我有一個變量的問題,而不是與AJAX響應。讓他們知道你的動作 – GibboK
這是一個重複的。如果有點難以爲你解析,那是說你不能真正做你想做的事情;這就是Javascript的工作原理。您需要將回調傳遞給您的匿名函數 - 另一個內部函數,當您在processData中接收到結果時將被調用。這就是你應該繼續做更多工作的地方,而不是當你從調用$ .getJSON – jrajav
的函數返回時,事情就是ajax是異步的,所以即使你在創建時調用該函數,結果也不會被填充到after ajax調用將返回。 –