2015-05-28 243 views
0

我有這樣的遍歷JSON對象

var Obj = { 
    'id1': 'abc', 
    'id2': 'pqr', 
    'id3': 'xyz' 
} 

一個JSON對象,我打電話異步方法,而迭代,這樣

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

看看http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example – RafaelC

回答

1

你需要使用一個IIFE

for (i in Obj) { 

    var someData = Obj[i]; 
    (function(i) { 
     File.upload(someData).then(function(response) { 
      otherObj[i] = response.data.url; 
     }); 
    })(i); 
} 

這將在回調File.upload().then的執行上下文保存i。之前發生的事情是每個File.upload().then'看到'最後迭代的i這是所有回調可見。