我有一個循環異步回調的問題。我在Window的文件對象之一上調用一個異步函數來獲取關於它的更多信息(getImagePropertiesAsync()
),並將它們保存到數據庫中以加快訪問速度。我需要該函數返回的值以及當我調用getImagePropertiesAsync()
時的值i
。如何在獲取調用函數返回的內容時將局部變量傳遞給回調函數?
for (var i = 0; i < picsGiven.length; i++) {
picsGiven[i].properties.getImagePropertiesAsync().then(function(prop){
settings.values["geoLat" + i2] = props.latitude;
settings.values["geoLon" + i2] = props.longitude;
settings.values["geoDate" + i2] = props.dateTaken;
i2++;
})
}
由於異步執行,對三個值按錯誤順序保存。當我寫這篇文章時,我已經擔心這個問題。下一次嘗試。現在
for (var i = 0; i < picsGiven.length; i++) {
picsGiven[i].properties.getImagePropertiesAsync().then((function(prop, i2){
settings.values["geoLat" + i2] = props.latitude;
settings.values["geoLon" + i2] = props.longitude;
settings.values["geoDate" + i2] = props.dateTaken;
})(undefined, i))
}
,我i
正確的,但props
是不確定的。 (邏輯)。
我怎麼可能得到i
正確,同時保留props
?提前致謝!
的可能重複[關閉的Javascript內循環 - 簡單實用的例子(HTTP:// stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) –