2017-08-15 35 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

您需要返回承诺的回复 –