Javascript onBeforeRequest侦听器中的异步调用替代方案

Javascript onBeforeRequest侦听器中的异步调用替代方案,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,对于我的Chrome扩展,我希望有阻塞请求功能。我有一个很大的域列表(~10000个),我曾考虑使用IndexedDb存储域列表,但现在我明白了,不可能进行异步调用并在请求处理程序中返回结果。 我最初的计划是: function reqHandler(data) { // async IndexedDb call here // and return { cancel: true } or { cancel: false } depends on result } chrome.web

对于我的Chrome扩展,我希望有阻塞请求功能。我有一个很大的域列表(~10000个),我曾考虑使用IndexedDb存储域列表,但现在我明白了,不可能进行异步调用并在请求处理程序中返回结果。 我最初的计划是:

function reqHandler(data) {
  // async IndexedDb call here 
  // and return { cancel: true } or { cancel: false } depends on result
}
chrome.webRequest.onBeforeRequest.addListener(
  reqHandler,
  { urls: ['<all_urls>'] },
  ['blocking']);
功能请求处理程序(数据){
//异步IndexedDb调用在这里
//返回{cancel:true}或{cancel:false}取决于结果
}
chrome.webRequest.onBeforeRequest.addListener(
reqHandler,
{URL:['']},
[“阻塞]);
看起来这是不可能的? 处理我的案子最好的办法是什么?如何处理这种大小的域列表?我认为它太大了,不能作为一个对象存在于内存中。
希望你能告诉我如何处理这个问题。谢谢你

你试过把它保存在内存中吗?在
URL
中提供域数组,以便Chrome处理过滤,这就是这个功能存在的原因。你有没有找到合理的解决方案?@Anthony最终我们没有使用IndexedDb-所以没有。对于我们的特殊情况,本地存储足以存储列表并将其放入reqHandler@AlexEfremov我找不到一种方法在函数中进行异步调用,同时仍然进行重定向工作,幸运的是,我能够为我试图实现的目标创建一个解决方案,但问题仍然是是否可能。