我是这样的JSON对象
var Obj = {
'id1': 'abc',
'id2': 'pqr',
'id3': 'xyz'
}
我在迭代时调用异步方法,就像这样
var otherObj = {};
for (i in Obj) {
var someData = Obj[i];
File.upload(someData).then(function(response) {
otherObj[i] = response.data.url;
});
}
但在此我将otherObj作为
otherObj = {
'id3':'url1',
'id3':'url2',
'id3':'url3',
}
所以我的问题是将Obj
对象中的每个密钥与File.upload()
的响应正确关联的最佳方法是什么。
答案 0 :(得分:1)
您需要使用IIFE
for (i in Obj) {
var someData = Obj[i];
(function(i) {
File.upload(someData).then(function(response) {
otherObj[i] = response.data.url;
});
})(i);
}
这将在i
的回调的执行上下文中保留File.upload().then
。以前发生的事情是每个File.upload().then
“看到”所有回调可见的最后一次迭代i
。