我在循环中遇到异步回调问题。我在 Window 的一个文件对象上调用一个异步函数以获取有关它的更多信息 ( getImagePropertiesAsync()
) 并将这些信息保存到数据库中,以便更快地进行进一步访问。我需要该函数返回的值以及i
调用时的值getImagePropertiesAsync()
。
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
?提前致谢!