2015-10-04 107 views
-4

我有一個需要運行197次的函數。我用一個簡單的for循環來迭代它。使用異步回調的Javascript函數不會改變dom內部的循環

for(var m=0;m<198;++m) { 
    console.log($('#riddle').attr('index')+" "+$('#riddle').attr('word')); 
    submitN();  
} 

對於每次迭代這應該打印ID =謎語的索引和Word屬性,然後執行submitN函數而變化的指數和Word屬性。

但該函數只執行一次。

這是我GET- enter image description here

如果我執行submitN seperately功能,不循環的197倍,它工作正常

enter image description here

按下該鍵197倍是一個非常低效,我希望有一些幫助可以使它在循環中運行。

編輯

submitN功能

function submitN() { 
    var i_val = $('#riddle').attr('next'); 
    req_n = sendData(JSON.stringify({'i':i_val}),'/clue'); 
    req_n.done(munchClues); 
    req_n.fail(clueFail); 
} 
+0

看看你的第一個截圖。看到「0右」旁邊的藍色「198」?這是控制檯說「這東西連續打印198次,但我不想打擾你所有人」。 –

+1

而不是顯示submitN()是由於? – baao

+0

函數工作198次:) – Omidam81

回答

2

要等待每次像異步調用@ ste2425和@ t.niese說,你可以等待檢查的SendData回調內部的DOM:

var m = 0; 
function checkRiddle(){ 
    m++; 
    console.log($('#riddle').attr('index')+" "+$('#riddle').attr('word')); 
    submitN(); 
} 
checkRiddle(); 

function submitN() { 
    var i_val = $('#riddle').attr('next'); 
    req_n = sendData(JSON.stringify({'i':i_val}),'/clue'); 
    req_n.done(function(params){ 
    munchClues(params); 
    if(m<198){ 
     checkRiddle(); 
    } 
    }); 
    req_n.fail(clueFail); 
} 

這假定munchClues只使用一個參數。可能需要進行一些測試才能在完成的回調中成功注入此代碼。

+0

訣竅!謝謝 –