$(document).ready(function () { var value = getParmsVals()["search"]; $.getJSON('/api/search/GetQuestionByKey/' + value,function (jsonData) { $(jsonData).each(function (i,item) { var name = getAuthorName(item.userId); }); }); }); function getAuthorName(userId) { var fullname = "default"; $.getJSON('/api/search/GetUserById/' + userId,function (jsonData) { fullname = jsonData.firstname + " " + jsonData.lastname; }); return fullname; }
我试图通过调用getAuthorName方法来访问fullname变量,但我无法获得正确的值.它总是给我“默认”的价值.
解决方法
您不会从异步方法返回,如您所见,它不起作用!你需要的是一个回调函数,考虑:
function getAuthorName(userId,callback) { var fullname = "default"; $.getJSON('/api/search/GetUserById/' + userId,function (jsonData) { fullname = jsonData.firstname + " " + jsonData.lastname; callback(fullname); }); }
注意我们如何传递回调然后在你的get调用结束时调用它?现在调用这个方法:
getAuthorName(userID,function(name) { console.log(name); });
现在您可以在该回调函数中访问fullname!