有没有办法在内容脚本和主插件脚本之间进行同步通信?
如果我为此制作一个方法,则该方法立即返回。那么有没有办法等待主脚本响应然后处理结果?
worker.port.on("GetValue"),function(key)
{
worker.port.emit('GetValue',ss.storage[key]);
}
//get value from local storage
function GetValueFromLocalStorage(key)
{
self.port.emit("GetValue", key);
self.port.on("GetValue", function (value)
{
return value;
});
}
如果这是可能的,那将是有益的,因为异步代码不干净和有组织,并且特别是如果我不得不多次访问此方法时写一个噩梦。
答案 0 :(得分:2)
不,附加SDK设计为仅允许异步通信。最初的想法是,最终基于SDK的扩展将在单独的进程中运行,而内容脚本必须在网页的进程中运行。不确定这个计划是否仍在继续,但它可能是异步API的主要原因 - 否则在不破坏所有扩展的情况下改变为多进程是不可能的。
显然,您可以使用低级API,尤其是chrome authority来直接和同步访问网页。但是,如果代码可读性是您研究这个问题的唯一原因,那么您将离开记录良好且支持的地形,这可能不是最佳选择。