我想记录在对象上调用方法的结果。
当前脚本将函数的结果记录在属性token
中,字面意思是结果是已定义的函数。
我在这里做错了什么?非常感谢!
$(document).ready(function () {
// General Settings
var
ApiSettings = {
clientId: 'aaa',
clientSecret: 'bbb',
token: function () {
var token;
$.getJSON(ApiSettings.uriGetToken, processData);
function processData(data) {
token = data.access_token;
}
return token;
}
}
ApiSettings.uriGetToken = 'https://ccc.com/oauth/token?grant_type=client_credentials&client_id=' + encodeURIComponent(ApiSettings.clientId) + '&client_secret=' + encodeURIComponent(ApiSettings.clientSecret);
console.log(ApiSettings);
console.log(ApiSettings.uriGetToken);
var test = ApiSettings.token;
console.log(test);
});
最佳答案
尝试更换
token: function () {
var token;
$.getJSON(ApiSettings.uriGetToken, processData);
function processData(data) {
token = data.access_token;
}
return token;
}
与
token: (function () {
var token;
$.getJSON(ApiSettings.uriGetToken, processData);
function processData(data) {
token = data.access_token;
}
return token;
})()
应该内联执行您的功能。
或者,您可以将URI作为参数传递给令牌函数,
token: function (tokenURI) {
var token;
$.getJSON(tokenURI, processData);
function processData(data) {
token = data.access_token;
}
return token;
}
然后打电话
ApiSettings.token('https://ccc.com/oauth/token?.......');