首页 > 解决方案 > chrome扩展后台执行时间限制

问题描述

我正在创建一个 Chrome 扩展程序,它在后台执行大量异步和繁重的工作。它从网络上下载大量图像,对其进行转换,然后将它们保存到一个 zip 文件中。完成这一切所需的时间可能超过 1 分钟。

我注意到有时不幸的是扩展程序没有完成工作,后台页面变得不活动并且执行停止。当我打开背景页面时,这永远不会发生 - 它只会在它关闭时发生。

我通过来自内容脚本的消息在后台脚本中启动工作。似乎如果我提供一个“sendResponse”回调,并且在后台表明我正在等待返回值为“true”的响应,它会起作用:

    chrome.runtime.onMessage.addListener( (message, sender, sendResponse) => {
        if (message.action === 'download') {
            downloadAction(data, type).then(r => { 
                console.log('finished');
                sendResponse('success');
            })
        }
        return true;
    })

当我不提供“真”的回报时,它不会。那么这是在后台执行长异步代码的正确方法,即使我对响应不感兴趣?或者这只是一种可行的解决方法?

当使用没有消息的消息启动时,扩展程序在后台工作的时间似乎是有限制的,那么return true;使用警报启动呢?此外,当我表示我期待回复时,它的工作时间是否有限制return true;?当然它不会让我无限期地运行后台脚本吗?

标签: javascriptgoogle-chrome-extensionfirefox-addon

解决方案


推荐阅读