首页 > 解决方案 > 如何等待 chrome.tabs.query 返回选项卡 ID

问题描述

我正在尝试处理chrome.tabs.query返回选项卡 ID。

function getTabID () {
  var tabID = ''
  chrome.tabs.query({
    active: true,
  }, function(tabs) {
    tabsID = tabs[0].id
  } 
  return tabID
}

我正在尝试获取 tabID。这似乎chrome.tabs.query({是一种异步方法。

var responseTabID = getTabID()     //calling the getTabID method.
// Code using responseTabID

所以这里我需要等待getTabID方法返回tabID。这样我将进一步使用该 tabID。

我什至可以在里面调用一个方法function(tabs) { // calling a method here }。但是我在多个地方都需要tabID,所以我只想实现一个新方法来返回tabID。

如何等待 getTabID 方法?是否可以使用异步/等待?

标签: javascriptgoogle-chrome-extension

解决方案


您可以尝试将回调包装在 promise 中,然后在异步函数中使用 await 来检索选项卡 ID:-

function getTabID() {
    return new Promise((resolve, reject) => {
        try {
            chrome.tabs.query({
                active: true,
            }, function (tabs) {
                resolve(tabs[0].id);
            })
        } catch (e) {
            reject(e);
        }
    })
}

//function where you need it
async function something() {
    let responseTabID = await getTabID();
}

推荐阅读