2017-08-15 64 views
-3

我已經實現了使用ajax(xhr)向服務器發送請求數據的java腳本。如何將循環(for)轉換爲java腳本中的承諾

但不知何故,循環不是承諾。

我試圖實現Promise但總是失敗。

這是我想轉換成承諾

var resulA = ajaxA(a); 
    For(resultA){ 
     var resultB = ajaxB(url?param1=resultA.id); 
     for(resultB){ 

      var resultC = ajaxC(url?param1=resultA.id¶m2=resultB.id); 
      for(resultC){ 
      } 

     } 
    } 

請你給我一個指導如何把JavaScript的上方進入無極的JavaScript?

編輯: 在這裏,我想用承諾

var xhr = $.getJSON('${pageContext.request.contextPath}/someURL.action?'); 
     console.log("after load ajax"); 
xhr.done(function(data){ 

    for (var i = 0; i < data.length; i++) { 


     var xhrPolygon =   $.getJSON('${pageContext.request.contextPath}/Koordinat/getKoordinateAja.action?idArea='+data[i].id); 
         xhrPolygon.done(function(resultData){ 
if(resultData.length>0){ 
          for (var j = 0; j < resultData.length; j++) { 
            var koordinat = [resultData[j].areaLng,resultData[j].areaLat]; 
            console.log(koordinat); 
          } 
          } 
         }); 



} 
}); 
+1

你應該有一些錯誤顯示在你的控制檯。 – Script47

+4

請注意:Java和Javascript不是相同的語言,就像奧地利和澳大利亞不是同一個國家一樣。 – PeterMader

+0

可能是[*如何從異步調用返回響應?]的副本(https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous -呼叫);其中的一些答案提到了如何處理一系列的承諾(一個接一個地)或並行(一次完成,等待他們完成)。 –

回答

0

的JavaScript XHR不是建立在承諾之上,但新獲取Java腳本確實在這裏你有文件https://github.github.io/fetch/

如果你需要在這裏創建一個承諾,你有一些代碼

let promise = new Promise((resolve, reject) => { 
    if(success){ 
    resolve(); 
    } 
    else{ 
    reject() 
} 
}); 

promise.then(r => console.log(r), e => console.log(e)); 
+0

那麼,多於1個承諾,就是說承諾A和承諾B,承諾B對承諾A的結果要求一些性能,如何將承諾A的結果傳遞給承諾B並從承諾B函數中使用它。 –

+0

promise.then(R => {// 做某事 的console.log(R, 'A'); 返回R等 }) 。然後(R => {// 做某事 的console.log (R, 'B'); 返回R等 }) 。然後(R => {// 做某事 的console.log(R, 'C'); 返回R等 }); –

+0

您需要返回承諾的回覆 –