迭代JSON对象

时间:2015-05-28 03:22:22

标签: javascript json

我是这样的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()的响应正确关联的最佳方法是什么。

1 个答案:

答案 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