Как ждать возвращаемого значения обратного вызова асинхронного метода?
Я знаю, что ждать асинхронного метода глупо,вместо этого следует использовать обратные вызовы, Но что, если сторонний 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']);
Надеюсь, вы видите мою дилемму в коде выше. Мне нужно вернуть объект на основе результата асинхронных вызовов методов. Возможно ли этого добиться?