如何解决如何等待 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 举报,一经查实,本站将立刻删除。