Javascript 从嵌套函数返回当前URL-Chrome扩展

Javascript 从嵌套函数返回当前URL-Chrome扩展,javascript,function,google-chrome-extension,return,Javascript,Function,Google Chrome Extension,Return,我正在尝试创建一个chrome扩展来获取当前所选选项卡的URL,但遇到了一个问题,无法获取存储URL的变量以返回 我已经尝试了几种方法,但这是我希望能够使用的代码: function getStream() { alert(getLinking()); } function getLinking() { chrome.tabs.query({ 'active': true, 'windowId': chrome.windows.W

我正在尝试创建一个chrome扩展来获取当前所选选项卡的URL,但遇到了一个问题,无法获取存储URL的变量以返回

我已经尝试了几种方法,但这是我希望能够使用的代码:

function getStream() {
    alert(getLinking());
}

function getLinking() {
    chrome.tabs.query({
            'active': true,
            'windowId': chrome.windows.WINDOW_ID_CURRENT
        },
        function getURL(tabs) {
            var URL = tabs[0].url;
            return URL;
        }
    );
    return getURL();
}

document.addEventListener('DOMContentLoaded', function () {
    document.getElementById('start').addEventListener('click', getStream);
});
但是,它实际上不会返回任何内容,因此警报不会显示。请注意,对于我来说,返回变量URL非常重要,这样我就可以在getStream函数中使用它,只是在getURL函数中添加警报并不是我想要的


如果有人能帮助我,那将是令人惊讶的,我还不太熟悉javascript,而且我对chrome扩展特别不熟悉,所以每一点建议都会有所帮助。

方法
chrome.tabs.query
是异步的,所以它需要回调来返回结果

在处理异步调用时,可以使用以下任意方式处理结果:

  • 回调
  • 许诺
  • 异步/等待
请检查此问题:

根据您的代码,最简单的解决方案是:

函数getStream(){ getLinking(函数(URL){//传递回调 警报(URL) }); } 函数getLinking(callback){//callback-是异步调用完成时将调用的函数 chrome.tabs.query({ “活动”:正确, “windowId”:chrome.windows.WINDOW\u ID\u当前 },功能(选项卡){ 回调(制表符[0].url);//使用结果运行回调 } ); //不需要归还任何东西 } document.addEventListener('DOMContentLoaded',函数(){ document.getElementById('start')。addEventListener('click',getStream'); });