在返回弹出脚本之前,如何等待后台脚本完成?

时间:2019-04-27 22:17:40

标签: javascript google-chrome-extension callback

我创建了一个Chrome插件,当我单击它的工具栏按钮时,它会弹出一个带有一些值的弹出消息。弹出脚本会在后台脚本中触发一个函数,该函数返回这些值,同时该函数启动另一个回调函数。该插件正常工作,我的问题是我需要在回调函数完成后而不是在运行时将背景脚本的值返回到弹出脚本。

这是代码

popup.js

    document.addEventListener("DOMContentLoaded", function () {
        backGround = chrome.extension.getBackgroundPage();
        var msg = backGround.browserOnClickAxn();      
        insertText (msg);
        }
    );

    function insertText (msg) {
    do stuff
    }

background.js

    function browserOnClickAxn()
    {

    chrome_api_function (
    do stuff
    callback()
    )

    var result = another_function()
    var msg = result
    return msg; 

    }

当前代码发生的情况是,弹出消息msg获取其值并在callback()仍在运行时出现。 callback()会做自己的事情,与生成msg值无关。

我希望弹出消息msg获得其值,并且仅在回调完成后才显示。

我该如何处理?我在 var结果之前放置了条件 while ,以使主函数一直等到callback()返回一个条件,该条件会停止一会儿,但整个脚本会暂停。

我是否使用更多回调?我可以使用Chrome的SendMessage API吗?我想解决这个问题而不会使现有代码过度复杂。

0 个答案:

没有答案