2017-04-18 153 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

如何:

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++; 
     })(); 
    } 
} 
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(); });