使用开关时,Javascript函数返回undefined 函数stRequest(类型){ 开关(类型){ “收藏夹”案例: $.getJSON(“js/favorites.json”) .完成(功能(数据){ var message=“”; $.each(data.favorites,function(){ 消息+=“”; }); 返回消息; }); 打破 } }
当使用类似于使用开关时,Javascript函数返回undefined 函数stRequest(类型){ 开关(类型){ “收藏夹”案例: $.getJSON(“js/favorites.json”) .完成(功能(数据){ var message=“”; $.each(data.favorites,function(){ 消息+=“”; }); 返回消息; }); 打破 } },javascript,jquery,Javascript,Jquery,当使用类似于console.log(stRequest(“favorities”))的东西运行时它总是返回未定义的。简而言之,我的函数有什么问题?您从内部函数返回 您需要从外部函数返回 您需要传递一个回调,以便在done()内部调用,或者使用承诺。然后,您可以使用message作为参数解析回调。您将从内部函数返回 您需要从外部函数返回 您需要传递一个回调,以便在done()内部调用,或者使用承诺。然后,您可以使用message作为参数来解析回调。承诺无疑是一种方法。退房 承诺绝对是最好的选择。退
console.log(stRequest(“favorities”))的东西运行时代码>它总是返回未定义的。简而言之,我的函数有什么问题?您从内部函数返回
您需要从外部函数返回
您需要传递一个回调,以便在done()
内部调用,或者使用承诺。然后,您可以使用message
作为参数解析回调。您将从内部函数返回
您需要从外部函数返回
您需要传递一个回调,以便在done()
内部调用,或者使用承诺。然后,您可以使用message
作为参数来解析回调。承诺无疑是一种方法。退房
承诺绝对是最好的选择。退房
始终记住,ajax中的a(即使用getJSON
所做的事情)代表AsynchNonus始终记住ajax中的a(即使用getJSON
所做的事情)代表AsynchNonus是否可以使用$.Deferred()做同样的事情代码>因为我已经在使用jQuery,如果不需要的话,我会犹豫是否添加另一个脚本?@BenedictLewis@BenedictLewis我没有使用jQuery的版本,但看起来非常相似。是否可以对$.Deferred()执行相同的操作代码>因为我已经在使用jQuery,如果不需要的话,我会犹豫是否添加另一个脚本?@BenedictLewis@BenedictLewis我没有使用jQuery的版本,但看起来非常相似。
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;
}
}
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);
});