Manifest V3下Chrome Omnibox异步响应延迟超3秒时建议列表不显示的问题求助
Manifest V3下Chrome Omnibox异步响应延迟超3秒时建议列表不显示的问题求助
各位好,我正在开发一个基于Manifest V3的Chrome扩展,在实现Omnibox的AI联想词功能时遇到了棘手问题,想请教大家的解决方案:
问题背景
我通过chrome.omnibox.onInputChanged.addListener结合防抖逻辑和请求中断控制来实现功能,核心是调用AI服务器的getKeywordSuggestions()接口获取联想词。但当这个异步请求的响应时间超过3秒左右时,明明suggest()回调执行没有报错,Omnibox的联想下拉框却完全不显示。
核心实现代码
const DEBOUNCE_DELAY = 300; let omniboxTimer, abortController, latestInput; chrome.omnibox.onInputChanged.addListener((input, suggest) => { clearTimeout(omniboxTimer); if (abortController) abortController.abort(); abortController = new AbortController(); latestInput = input; if (!input.trim() || input.trim().length < MIN_LENGTH) return; setDefaultSuggestion(input); omniboxTimer = setTimeout(async () => { if (input !== latestInput) { console.log(`Input changed - discarding`); return; } try { const suggestions = await getKeywordSuggestions(input); // 调用AI服务器的网络请求 if (input === latestInput) { const formatted = suggestions.map(s => ({ content: escapeXML(s), description: `${escapeXML(s)} - AI suggestion` })); // 这里通过控制台确认格式化后的内容是有效的 suggest(formatted); // 问题:此时联想框不显示 } } catch (error) { if (input === latestInput) { setDefaultSuggestion('Timeout error'); suggest([]); } } }, DEBOUNCE_DELAY); });
关键观察细节
- 网络请求始终能成功完成,控制台打印确认生成了格式正确的有效联想词
- Chrome的扩展控制台没有出现任何报错信息
- 问题仅在响应时间超过约3秒时触发;如果
getKeywordSuggestions()在3秒内返回结果,suggest()就能正常唤起联想下拉框
已尝试的排查动作
- 验证了
latestInput的校验逻辑工作正常,能正确丢弃过时的请求结果 - 多次测试确认:请求响应在3秒内时,整个功能完全符合预期
期望实现的效果
希望即使AI服务器的响应等待时间超过5秒,suggest()函数也能正常工作,让用户看到对应的联想下拉框。
内容来源于stack exchange
相关产品推荐
相关产品推荐

