Как ждать возвращаемого значения обратного вызова асинхронного метода?

Я знаю, что ждать асинхронного метода глупо,вместо этого следует использовать обратные вызовы, Но что, если сторонний API заставляет вас быть синхронным?

Я разрабатываю расширение Chrome, которое не позволит пользователю посещать веб-сайты, которые уже открыты в другой вкладке. Мне в основном нужно отменить запросы на основе URL-адресов в открытых вкладках. Я хочу использоватьchrome.webRequest.onBeforeRequest нравится:

function onBeforeRequest(details) {
  var websiteAlreadyOpenInOtherTab;

  // Here i want to set `websiteAlreadyOpenInOtherTab` by using the `chrome.tabs`
  // API. It's asynchronous though and that's my problem. I cant return a value
  // from an asynchronous method call.

  if (websiteAlreadyOpenInOtherTab) {
    return { cancel: true };
  }
}

chrome.webRequest.onBeforeRequest.addListener(
  onBeforeRequest,
  { urls: ['<all_urls>'], types: ['main_frame'] },
  ['blocking']);

Надеюсь, вы видите мою дилемму в коде выше. Мне нужно вернуть объект на основе результата асинхронных вызовов методов. Возможно ли этого добиться?

Ответы на вопрос(1)

Ваш ответ на вопрос