0
我有一個函數運行一個for循環,然後在for循環完成後回調它的結果。我的問題是,在這個for循環函數中,我有兩個有回調的函數,他們花費了大約半秒的時間完成(也許更少)。當我用適當的數據進行調用時,我的結果數組在完成後被回調,但是當用戶名是唯一的時候,圖片是相同的,這不是我想要的。我相信這與JS試圖成爲異步的東西有關,但它只是打破了。這裏是我的代碼:for循環中函數回調的問題
function forCallback(rows, callback){
var done = 0;
for(i = 0 ;i < rows.length; i++){
var steamid = rows[i].steamid;
userinfo.getUserName(steamid, function(name){
userinfo.getUserPicture(steamid, function(picture){
results.push({
name: name,
picture: picture
})
done++;
console.log("Queried " + done + " username(s)")
if(done == (rows.length)){
callback(results);
}
});
});
}
}
該函數需要SQL行並解析數據,如果你想知道。任何幫助表示讚賞,非常感謝!
你有沒有嘗試在IFFE中包裝循環的東西? – JordanHendrix
看看這個解釋(閉環裏面的段落):http://bonsaiden.github.io/JavaScript-Garden/#function.closures – wawawoom