2014-10-01 74 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