обработка данных функции обратного вызова - PullRequest
0 голосов
/ 04 апреля 2011

Я не очень знаком с функциями обратного вызова в javascript и тем, как они обрабатывают данные.

Я хочу добиться чего-то подобного в Google Chrome

function getBookmarkBar()
{
  chrome.bookmarks.getChildren('1',function(bookmarkNodes)
  {
     return bookmarkNodes;
  });
}

function getOtherBookmarks(folderId)
{
  chrome.bookmarks.getChildren(folderId,function(bookmarkNodes)
  {
    return bookmarkNodes;
  });
}

function doprocessing(){
{
  bookmarkbarNodes=getBookmarkBar();
  otherNodes=getOtherBookmarks('2');

 //do some processing for bookmarkbarNodes and otherNodes
}

есть ли способ (или как можно ближе) сделать это? сейчас я делаю это с помощью одной функции, но это было бы плохой идеей из-за связи логики поиска и модификации:

function process{
 chrome.boomarks.getChildren('1',function(bookmarkNodes){
   chrome.bookmarks.getChildren('2',function(otherNodes){
     //do processing
    });
});

запись приведенного выше кода в обобщенной функции сделает его многократно используемым.

1 Ответ

0 голосов
/ 04 апреля 2011

Нет возможности синхронизировать функции.Кроме того, это плохая идея, поскольку вы блокируете программу до тех пор, пока функция не будет полностью выполнена.

Обратные вызовы - отличная вещь.Есть веская причина, почему API является полностью асинхронным.Они не хотят, чтобы вы синхронизировали функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...