首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解tabs.sendMessage和承诺

理解tabs.sendMessage和承诺
EN

Stack Overflow用户
提问于 2021-10-22 16:05:40
回答 1查看 175关注 0票数 1

我已经阅读了大量的论坛和编辑链接和堆叠溢出的QnA,没有回答问题或清楚地解释它。我已经做了2-3天了,就在这个异步等待承诺bs上。

我有一个调用chrome.tabs.sendMessage的异步弹出函数,如下所示,它非常非常基本。我发了个信息,等着回复。维奥拉搞定了。

我对回调函数的理解告诉我,chrome.tabs.sendMessage 将等待响应,然后运行函数,但是函数运行会发生什么呢?我也搞不懂。它只是尽快地运行接收到的文件,而不等待内容脚本完成。那么回调函数的意义是什么呢?

我尝试过在发送之前添加“等待”,然后等待回调函数,以及任何可能的方式,但是它不起作用。我不明白。程序不需要等待就能运行。

我读过不起作用。而没有任何意义。承诺等待一条“完整”的信息,不知怎么的,这使它等待。但是tabs.message回调函数也在等待响应,但仍然在运行,什么都不等待吗?

代码语言:javascript
复制
document.addEventListener('DOMContentLoaded', async function() {
    console.log('got tabs id');
    tab = await getCurrentTab();
    console.log('Active tab ' + tab.id);
    console.log('Sending Message to Content');
    chrome.tabs.sendMessage(tab.id, {action: "getDOM"},function (ret) {
        console.log('Receiving Message from Content');
        try {
            if (!ret.incident.length) return;
            globalThis.response = ret;
            processResponse(response);
        }
        catch(err) {
            console.log('doing nothing, bad return data')
            window.close;
            return;
        }

    });
    return;
}); 
EN

回答 1

Stack Overflow用户

发布于 2021-10-23 03:51:07

很明显OP很困惑。回调、异步/等待、承诺是一回事,只是写得不一样。下面是只使用允诺更新的代码,以及绝对必要时的回调。在这种情况下,chrome的tabs.sendMessage不会像火狐一样返回承诺。所以它必须使用回调表单。在本例中,content_script对sendResponse执行超时,并且工作正常。

代码语言:javascript
复制
document.addEventListener('DOMContentLoaded', function() {
    console.log('got tabs id');
    let queryOptions = {active: true, currentWindow: true};
    chrome.tabs.query(queryOptions)
    .then((tabs) => {
        chrome.tabs.sendMessage(tabs[0].id, {action: "getDOM"}, (response) => {
            console.log(response);
            // processResponse(response);
        });
    })
    .catch((err) => {
        console.log(err);
        window.close();
        return;
    });
}); 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69679972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档