You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome消息系统异步响应始终返回null问题求助

Chrome扩展消息系统异步响应返回null的解决方法

你的问题出在异步响应的处理方式上,虽然你在监听器里返回了true标记异步响应,但使用立即执行异步函数(IIFE)调用sendResponse的方式,无法正确将响应值传递回发送端。

修正后的响应端代码

直接将监听器定义为async函数,通过返回Promise来传递异步结果(Chrome会自动解析这个Promise作为响应):

chrome.runtime.onMessage.addListener(async (request, sender) => {
  const key = await getKey();
  return key;
});

为什么原来的写法不行?

Chrome的onMessage监听器在处理异步响应时,更推荐使用返回Promise的方式(即async函数)。旧的sendResponse+return true写法虽然理论上可行,但如果在嵌套的异步函数中调用sendResponse,可能会因为上下文关联问题导致响应无法正确传递,最终返回null。

验证静态字符串的情况

如果要测试静态字符串的异步响应,同样用async函数返回即可:

chrome.runtime.onMessage.addListener(async () => {
  return "静态测试字符串";
});

发送端代码无需修改,依然可以通过await获取正确的响应值。

内容的提问来源于stack exchange,提问作者Joe W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 05:22:19