gpt4 book ai didi

javascript - 延迟脚本直到所有消息都已通过?

转载 作者:行者123 更新时间:2023-11-28 09:53:31 25 4
gpt4 key购买 nike

像往常一样,我在 Google 上搜索了相当多的内容并阅读了消息传递 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"] 等来说是不切实际的等等。另外我什至不知道这是否有效。

有人有什么想法吗?

谢谢

更新:不幸的是,仍然没有答案。任何人都可以提供任何帮助吗? :/

最佳答案

我不知道我对你的问题的理解是否错误。据我了解,您正在将请求从扩展页面发送到内容脚本。内容处理程序中的请求处理程序对传递的消息执行一些操作,之后您需要将控制权返回到扩展页面中。如果这是您所需要的,您可以在 Google Extension Documentation 中找到所有内容。 。以下代码有效

//Passing the message
function passMessages(){
chrome.extension.sendRequest({method: "methodName"}, function(response) {
//callback function that will be called from the receiving end

continueOn();
});
}

//Recieving the message
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
//Do the required operation with the message passed and call sendResponse

sendResponse();
});

关于javascript - 延迟脚本直到所有消息都已通过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10505726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com