像往常一样,我在 Google 上搜索了一下,并阅读了 Message Passing API,但是,我不得不再次求助于 StackOverflow 的好人。
我的问题是:在 Google Chrome 扩展程序的背景页面和内容脚本之间传递消息时,有没有办法让它异步 - 即延迟 JavaScript 直到检测到消息成功传递?
在消息传递函数使用传递的localStorage
数据之后,我立即有一个函数。在第一次运行时,由于数据传递速度不够快,脚本总是会导致错误。
目前,我正在规避这个问题,setTimeout(nextFunction, 250);
但这并不是一个优雅或实用的解决方案,因为传递的值的数量和大小总是会发生变化,我无法知道传递这些值需要多长时间。另外,我想,通过时间与浏览器版本和用户系统有关。
简而言之,我需要它是动态的。
我考虑过类似的东西
function passMessages(){
chrome.extension.sendRequest({method: "methodName"}, function(response) {
localStorage["lsName"] = response.data;
});
checkPassedMessages();
}
function checkPassedMessages(){
if (!localStorage["lsName"]){
setTimeout(checkPassedMessages, 100); //Recheck until data exists
} else {
continueOn();
}
}
但我需要传递相当多的数据(至少 20 个值),坦率地说,这对!localStorage["lsName1"] && !localStorage["lsName2"]
等是不切实际的。另外,我什至不知道这是否可行。
有没有人有任何想法?
谢谢
更新:不幸的是,仍然没有答案。任何人都可以提供任何帮助吗?:/