Как получить значение массива в обещании? (Uncaught (в обещании) TypeError: Невозможно прочитать свойство 'tabId' из неопределенного) - PullRequest
0 голосов
/ 29 января 2020

Я занимаюсь разработкой своего 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
...