从回调函数中访问外部数据

时间:2011-04-05 07:27:57

标签: javascript ajax google-chrome

我无法从内部的回调函数访问 nodes [i] chrome.bookmarks.create 。伙计们好吗?我想这是因为关闭。有什么方法可以使它发挥作用吗?

function copyBookmarks(nodes,folderId){            

    for(i=0;i<nodes.length;i++){

        var properties={
            parentId:folderId,
            index:nodes[i].index,
            title:nodes[i].title,
            url:nodes[i].url
        };   

        chrome.bookmarks.create(properties,function(newNode){              

          console.log(nodes[i]);//this doesnt work

        });                    
    }
}

1 个答案:

答案 0 :(得分:3)

正在访问nodes就好了,但问题是i将是循环完成后的值。通常的解决方案是通过自执行函数在每次迭代中复制i

for (var i = 0; i < nodes.length; i++) {

    // Other code...

    // Self executing function to copy i as a local argument
    (function (i) {
        chrome.bookmarks.create(properties, function (newNode) {
            console.log(nodes[i]);
        });
    })(i);
}