这是我的代码:
var name;
function getFBName(username) {
$.getJSON('http://graph.facebook.com/' + username, function (d) {
name = d.name;
});
}
getFBName("zuck");
console.log(name);
我几个小时都在苦苦挣扎,但我无法让getFBName
函数返回用户名。
这是JSON btw:
{
"id": "4",
"first_name": "Mark",
"gender": "male",
"last_name": "Zuckerberg",
"link": "https://www.facebook.com/zuck",
"locale": "en_US",
"name": "Mark Zuckerberg",
"username": "zuck"
}
答案 0 :(得分:4)
正如@jwatts1980所说,这是执行顺序的问题。在响应到达客户端之前,$.getJSON
将立即返回,因此当您运行console.log
时,它仍将等待。一种可能的解决方案是:
function getFBName(username) {
$.getJSON('http://graph.facebook.com/' + username, function (d) {
console.log(d.name);
});
}
getFBName("zuck");
将正确记录Mark Zuckerberg
。如果您有多种处理输出的方法,设置callback
函数可能也很有趣:
function getFBName(username, callback) {
$.getJSON('http://graph.facebook.com/' + username, function (d) {
callback(d.name);
});
}
function handleName(name) {
// Do a lot of things here
console.log(name);
}
getFBName("zuck", handleName);