使用switch时,Javascript函数返回undefined

时间:2014-03-20 12:24:46

标签: javascript 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;
  }
}

使用console.log(stRequest("favourites"));之类的东西运行时,它总是返回undefined。简而言之,我的功能有什么问题?

2 个答案:

答案 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);
});