Быстрый вопрос, я надеюсь.Я играл с chrome.windows.getAll()
, который принимает объект и функцию обратного вызова.В конце концов я получаю необходимые данные из метода, но мне нужно запустить этот метод асинхронно, чтобы данные возвращались до того, как я верну из него то, что мне нужно.Если я регистрирую его на консоли, я вижу пустой массив, но если развернут, данные отображаются.Я полагаю, что это возможные данные, но мое приложение никогда их не увидит.
Я использовал async / await по всему приложению без проблем, но я чувствую, что чего-то здесь не хватает.Кажется, я не могу использовать то, что знаю, для создания асинхронного процесса.
async function getURLs() {
let tabs = []
function getAllOpenWindows(winData) {
let winTabs = winData[0].tabs
for (let i = 0; i < winTabs.length; i++) {
tabs.push(winTabs[i].url)
}
}
try {
await chrome.windows.getAll({ populate: true }, getAllOpenWindows)
console.log(tabs)
return tabs
} catch (error) {
return null
}
}
function sessionToState(session) {
for (let i = 0; i < session.length; i++) {
dispatch({ type: 'add', value: session[i] })
}
}
return (
<div>
<form
method="post"
onSubmit={async e => {
e.preventDefault()
const session = await getURLs()
sessionToState(session)
createGroup()
В приведенном выше фрагменте кода я пытался использовать async / await, но я не верю, что chrome.windows.getAllвозвращает обещание (может быть, ничего не возвращает?), поэтому оно не будет работать.Мне интересно, какой подход я должен использовать, потому что я был в тупике уже много часов.Если вам понадобится еще какая-то часть файла или дополнительная информация, не стесняйтесь спрашивать.Спасибо.