асинхронная функция javascript, вызывающий абонент не ждет. манифест V3

#javascript #google-chrome #google-chrome-extension

Вопрос:

НЕ удаляйте мой вопрос. Я просмотрел веб-страницы, документацию, я не знаю, почему это происходит, и удаление вопроса НЕ помогает. Других подобных вопросов у меня нет.

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

Я пробовал использовать tabs= await getcurrenttab() , но это вызывает ошибку, говоря, что это работает только с асинхронными функциями. Которым слушатель не является.

введите описание изображения здесь

манифест.json

 {  "manifest_version": 3,   "name": "DHL Helper",  "description": "This helper helps DHL's quality of life, improves mental health.",  "version": "1.0",   "action": {  "default_icon": "icon.png",  "default_popup": "popup.html"  },  "content_scripts": [{  "matches":["*://servicenow.*.com/*",  "http://*/*",  "https://*/*"],  "js": ["content_helper.js"]  }],  "permissions": [  "activeTab"  ],  "host_permissions": [  "http://www.blogger.com/",  "*://*/*"  ] }  

popup.js

 document.addEventListener('DOMContentLoaded', function() {  console.log('got tabs id');  tab = getCurrentTab();  console.log('Active tab '   tab.id); });  async function getCurrentTab(){  console.log('trying to get tabs id');  let queryOptions = {active: true, currentWindow: true};  return await chrome.tabs.query(queryOptions)  .then((tabs) =gt; {  console.log('Obtained tab ID');  console.log(tabs);  return tabs[0];  })  .catch((Error) =gt; {  console.log('it failed');  console.error;  return;  }) }  

Комментарии:

1. Вы пробовали использовать getCurrentTab().затем(…) ?

Ответ №1:

 document.addEventListener('DOMContentLoaded', async function() {  console.log('got tabs id');  tab = await getCurrentTab();  console.log('Active tab '   tab.id); });  

Ваш подход уже был правильным, но если вы хотите использовать await в функции await, вы также должны сделать выполняющуюся функцию асинхронной.

Комментарии:

1. Спасибо. Я решил отступить и воспользоваться здравым смыслом и попробовал это сделать как раз перед тем, как вы ответили. Это мой первый раз, когда я создаю собственное расширение для целей QoL

2. @LuigiMackenzieC.Брито Тоже спасибо. Все бывает в первый раз 🙂

Ответ №2:

пользователь упоминает о попытке использовать =await getCurrentTab() , но сталкивается с ошибкой, которая ожидает только асинхронных функций…

добавление async функции прослушивателя событий устранило проблему

измените это:

 document.addEventListener('DOMContentLoaded', function() {  

к этому:

 document.addEventListener('DOMContentLoaded', async function() {  

Ответ №3:

вкладка не определена

var вкладка = getcurrentтаблица();

Комментарии:

1. спасибо, но разве это не определено, потому что функция ничего не вернула