2

如果我写:

var source = new Array();
function doSomething(a){
   chrome.bookmarks.search(a,function(items){
      for(var i = 0;i<items.length;i++)
      {
          source[i] = items[i];

      }

   });
   console.log(source[0].title);
   alert(source[0].title);

}

在控制台中我可以看到这些值,但警告的是“未定义”。

有人可以告诉我为什么以及如何写来获取这些值吗?

4

1 回答 1

0

alert在错误的范围内执行 - 您应该在回调函数中执行此操作。试试这个:

function doSomething(a){
   chrome.bookmarks.search(a,function(items){
      var source = [];
      for(var i = 0;i<items.length;i++)
      {
          source[i] = items[i];

      }
      console.log(source[0].title);
      alert(source[0].title);   
      doSomethingWithResult(source); 
   });      

}

您已经在控制台中看到了正确的值,因为它显示了对此时已经填充的值的引用(在回调函数中)。

于 2012-04-24T04:14:25.817 回答