我正在开发Chrome扩展程序,并且由于针对同步和异步apis的混合而开发而遇到了一个问题。
chrome.webRequest.onBeforeSendHeaders.addListener(function(details) {
//code that modifies details.requestHeaders
//..
return {requestHeaders: details.requestHeaders};
},
{urls: ["<all_urls>"]},
["blocking", "requestHeaders"]
在侦听器函数内部,我想从IndexedDB获取数据,并根据此数据修改请求标头。 IndexedDB只有一个异步API,而侦听器的契约要求它是同步的。
我有什么想法可以解决这个问题?
答案 0 :(得分:4)
数据库通话过于昂贵。也就是说,这是我头脑中的一个想法(这可能是可怕的):
话虽如此,您还需要考虑缓存未命中时的用户体验。也许提供一个默认参数,或某种类型的占位符值,以某种方式通知用户错过。这取决于您希望应用程序如何工作以及应用程序的功能,您没有说明。
哦,derp,并考虑使用localStorage作为内存映射...... Duh。