2017-04-18 9 views
0

javascriptで非同期呼び出しの問題に直面していますが、関数に渡される値が間違っています。擬似コード:ループ内のJavaScript非同期呼び出し

i=0; 
    while(i<10){ 
     var obj= {something, i};  
     getcontent(obj); //(<--- getcontent is async function/problem)  
    i++; 
    } 

すべてのgetcontent非同期呼び出しは、達成したいものではない最後のi = 9の値を使用します。
このような非同期呼び出しを処理し、すべての呼び出しで正しいi値を正しく/合格する方法は?

答えて

0

<script> 
 
var i = 0; 
 
while (i < 5) { 
 
setTimeout(function() { 
 
getcontent() 
 
}, 2000); 
 
    i++; 
 
} 
 
function getcontent(){ 
 
alert() 
 
} 
 
</script>

それがどのようにこのことについて、あなたに

0

を助けることを願っています:私は、これはあなたが~~

var funcs = []; 
 
var i = 0; 
 
while (i < 10) { 
 
    funcs[i] = (function(index) { 
 
    return function() { 
 
     var obj = { '@': 'fd', 'index': index}; 
 
     return getcontent(obj); //(<--- getcontent is async function/problem) 
 
    }; 
 
    }(i)); 
 
    i++; 
 
} 
 

 
function getcontent(obj) { 
 
    console.log("My value: " + obj.index); 
 
}; 
 

 
funcs.forEach(function (item) { item(); });
探しているものだと思います

async function loop(){ 
    var i: number = 0; 
    while (i < 10) { 
     (async function() { 
      var obj = { "@": "fd", "#": i }; 
      await getcontent(obj); //(<--- getcontent is async function/problem)  
      i++; 
     })(); 
    } 
} 
関連する問題