function stRequest(type){
switch(type){
case "favourites":
$.getJSON("js/favourites.json")
.done(function(data) {
var message = "";
$.each(data.favourites, function(){
message += "<a href=\"#\" class=\"favourite-user\">" + this + "</a>";
});
return message;
});
break;
}
}
使用console.log(stRequest("favourites"));
之类的东西运行时,它总是返回undefined。简而言之,我的功能有什么问题?
答案 0 :(得分:4)
你正在从内部功能返回。
您需要从外部函数返回。
您需要传递回调以在done()
内部调用或使用承诺。然后,您可以使用message
作为参数来解析回调。
答案 1 :(得分:1)
承诺绝对是最佳选择。查看Q。
function stRequest(type){
var deferred = Q.defer();
switch(type){
case "favourites":
$.getJSON("js/favourites.json")
.done(function(data) {
var message = "";
$.each(data.favourites, function(){
message += "<a href=\"#\" class=\"favourite-user\">" + this + "</a>";
});
deferred.resolve(message);
});
break;
}
return deferred.promise;
}
然后你会像这样调用你的函数:
stRequest('favourites').then(function(message){
alert(message);
});