Я занимаюсь разработкой своего chrome расширения. Я не могу получить значение массива в обещании.
async function getAllTabs() {
let allTabs = [];
await chrome.windows.getAll({populate: true},function(windows){
windows.forEach(function(window){
window.tabs.forEach(function(tab){
let url = new URL(tab.url);
allTabs.push({windowId: window.id.toString(), tabId: tab.id.toString(), domain: url.hostname, title: tab.title, url: tab.url});
});
});
});
return allTabs;
}
let allTabs = getAllTabs();
allTabs.then(function(tabs) {
console.log(tabs); // no prob, an array is shown
console.log(tabs[0].tabId); // error! Uncaught (in promise) TypeError: Cannot read property 'tabId' of undefined
});
Журнал консоли для вкладок
Но я могу получить значения для простого словарного массива.
let dictArray = [];
dictArray.push({tabId: 2, windowId: 3, msg: "Hello"});
dictArray.push({tabId: 8, windowId: 6, msg: "Kitty"});
console.log(dictArray); // an array is shown
console.log(dictArray[0].tabId); // 2