微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何等待 chrome.tabs.query?

如何解决如何等待 chrome.tabs.query?

如何在继续执行代码之前等待 chrome.tabs.query 结果?

我有这个代码,我已经尝试了很多东西,但我想不出一种方法让 chrome.tabs.query 上的代码在继续之前完全执行。注释“LOG (background.js) clickGoButton done”总是首先出现在控制台上......

所有这些代码都在 background.js 中,在我按下扩展弹出窗口中的按钮后它就会运行。

function clickGoButton(){
chrome.tabs.query({currentwindow: true,active: true},async (tabs) => {
    const promiseArray = tabs.map(tab => {
        return execScript(tab);
    });

    const result = await Promise.all(promiseArray);
    console.log(result);
    console.log("Done");
})

chrome.extension.getBackgroundPage().console.log("LOG (background.js) clickGoButton done");
}

const execScript = (tab) => {
return new Promise((resolve,reject) => {
    /* Getting the selected text on the tab and saving into the result variable */
    chrome.tabs.executeScript(tab.id,{ code: `document.getSelection().toString()` },(result) => {

        /* Removing break lines from the selected text,saving the cleaned text on the group variable */
        var group = result[0].replace(/(\r\n|\n|\r)/gm,"");

        /* Selecting the chrome last focused tab */
        chrome.tabs.query({ active: true,lastFocusedWindow: true },function (tabs) {

            var param = "userNTID"
            var address = tabs[0].url;
            var domain = (new URL(address));

            var url_parameter = address.substr(address.indexOf(param))  
            var username = url_parameter.substring(url_parameter.lastIndexOf("=") + 1);
            chrome.storage.local.set({username: username},function() {});
        });

        /* Multidimensional array containing the VDI Groups */
        var groups = []; // removed to keep short

        for (var i = 0; i < groups.length; i++) {
            chrome.extension.getBackgroundPage().console.log(groups[i][0]);

            if(groups[i][0] === group){

                chrome.storage.local.set({ad_group: groups[i][0]},function() {});
                chrome.storage.local.set({farm: groups[i][1]},function() {});
                chrome.storage.local.set({pool: groups[i][2]},function() {});
                chrome.storage.local.set({assignment: groups[i][6]},function() {});
                chrome.storage.local.set({source: groups[i][5]},function() {});
                chrome.storage.local.set({machine: ''},function() {});
            }
        }
        resolve("Done");
    });
});
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?