2013-03-24 3 views
0

для каждой переменной i, ниже код должен проходить через «каждый узел закладки» и сравнивает URL-адрес, независимо от того, существует он или нет.асинхронный хром-метод внутри цикла

for(i=0;i<arg1;i++){ 
    chrome.bookmarks.getChildren(Traverse[i], function(child){  //to fetch the child nodes 
     Loc =child.length; 
     alert(Loc); // This message to appear first 
     if(Loc != 0){ 
      child.forEach(function(book) { 
       if (book.url == urL){ 
        alert("Bookmark already exist"); 
        element = "init"; 
       } 
      }); 
     } 
    }); 
alert("message to be printed last"); 
} 

Поскольку метод асинхронный, я получаю последнее сообщение, а перемещение закладок не происходит. Любая помощь будет высоко оценена.

Спасибо!

ответ

0

Вы, вероятно, нужно закрыть:

for(i=0;i<arg1;i++){ 
    (function(my_i) { 
     chrome.bookmarks.getChildren(Traverse[my_i], function(child){ 
      Loc =child.length; 
      alert(Loc); 
      if(Loc != 0){ 
       child.forEach(function(book) { 
        if (book.url == urL){ 
         alert("Bookmark already exist"); 
         element = "init"; 
        } 
       }); 
      } 
     }); 
    })(i); 
    alert("message to be printed last"); 
} 

Я предполагаю, что вы знаете, что вы перезапись оба Loc и element переменных на каждой итерации в цикле?

+0

Thanks Adeneo! выше код работает хорошо. Я тестирую его. Еще один запрос, как выйти, когда я нахожусь в закладе, существует сценарий, т. Е. Как выйти из цикла, поскольку оператор break не работает. –

Смежные вопросы