2014-10-01 46 views
0

您好我创造我想要的方式使用JS模块获取数据:创建于JS一个模块,必须从一个RESTful API

var dataCollection = new dataCollectionSetup(); 
var collectedData = dataCollection.getMeasures(2); 

我的问题是,我想从数据一个Restfull Api,这将是异步的。我创建这个模块,但我坚持就如何创建功能或里面的东西的承诺,让我打电话在我展示的方式getMeausre或类似这样的dataCollection.getMeasures(2).then(UpdatecoolectedData(res)).

var dataCollectionSetup = function() { 

    var getMeasuresByTrainingDomainId = function (tdId) 
    { 
     var jsonResponse; 

     fnSuccess = function (data, status, request) { 

      jsonResponse = data; 
      return jsonResponse 
     }; 

     fnError = function() { 
      alert("Error getting Maasures by Training Domain"); 
     } 

     $.ajax({ 
      type: "GET", 
      url: "/datacollection/Measures/" + timelineId, 
      complete: fnSuccess, 
      error: fnError 
     }); 
    } 

    var getMetrics = function() { 
     var result = CallApiForMetrics() 
     return result; 
    } 



    return { 
     getMeasures: getMeasuresByTrainingDomainId, 
     getNetric: getMetrics 
    } 
} 

谢谢

+1

如果你返回'结果'的Ajax调用(不是回调),你将有一个包含'then'方法的承诺。 – 2014-10-01 14:46:27

回答

1

只是使以下更改你的函数getMeasuresByTrainingDomainId

return $.ajax({ 
     type: "GET", 
     url: "/datacollection/Measures/" + timelineId, 
     complete: fnSuccess, 
     error: fnError 
    }); 

如果你看看the jquery documentation的AJAX方法,实现舞会ise接口,你可以这样使用它:

var dataCollection = dataCollectionSetup(); 
dataCollection.getMeasures(2).then(function(){/*your coode*/}) 
+2

下面是一个演示此示例的示例:http://jsfiddle.net/whqs7m97/ – friedi 2014-10-01 15:07:12

相关问题