function getUserData(name) {
var userData = {};
twitter.get('http://api.twitter.com/1/users/lookup.json', {screen_name:name}, function(data) {
userData = {
name: data[0].screen_name,
screenname: data[0].screen_name,
id: data[0].id,
url: data[0].url,
description: data[0].description
}
});
return userData;
}
我希望能够写出如下内容:
var userData = getUserData(name);
并让它返回该userData对象。
答案 0 :(得分:2)
你没有。
AJAX调用异步。您需要以某种方式使用回调。
function getUserData(name, cb) {
var userData = {};
twitter.get('http://api.twitter.com/1/users/lookup.json', {
screen_name: name
}, function(data) {
userData = {
name: data[0].screen_name,
screenname: data[0].screen_name,
id: data[0].id,
url: data[0].url,
description: data[0].description
}
cb(userData);
});
}
getUserData(name, function(userData) {
// do stuff.
});
如果您使用jQuery 1.5,则可以使用jQuery Deferred个对象的延迟承诺。
function getUserData(name, cb) {
var def = new jQuery.Deferred();
twitter.get('http://api.twitter.com/1/users/lookup.json', {
screen_name: name
}, function(data) {
var userData = {
name: data[0].screen_name,
screenname: data[0].screen_name,
id: data[0].id,
url: data[0].url,
description: data[0].description
}
def.resolve(userData);
});
return def.promise();
}
var promise = getUserData(name);
promise.done(function(data) {
// do stuff.
});