Я использую библиотеку, которая вызывает функцию перехвата всякий раз, когда создается новый объект:
// index.js
import Library from 'library';
Library.Hooks.UUID.register(function(context) {
let newID = generateNewID(context); // async
return newID; // The library will use the return value of this hook function as the ID for the newly created object
})
Проблема здесь в том, что функция перехвата является синхронной, в то время как моя generateNewID
функция может быть асинхронный вызов. (Для чего бы то ни было, я разрабатываю расширение Chrome, а фоновый скрипт отвечает за генерацию идентификатора, который асинхронно отвечает на скрипт контента через chrome.runtime.sendMessage
.)
Очевидное решение - пометить функции перехвата async
и await generateNewID(context)
, но для этого потребуется конвертировать библиотеку для использования механизма перехвата на основе Promise.
Какой более элегантный способ решить эту проблему без переписывания библиотеки?