gpt4 book ai didi

javascript - 如何让 Chrome 扩展程序休眠一段时间并在端口上发布消息

转载 作者:行者123 更新时间:2023-12-02 23:06:30 25 4
gpt4 key购买 nike

在我的扩展中,我希望扩展等待一段时间,因为它会更改内容中的某些内容,并且速度不能很快。我正在使用 sleep 功能,它只是一个循环,当时间到来时会中断,但它使我的计算机非常慢。我使用了 setTimeout 方法,但扩展显示“端口未定义”,因为运行 setTimeout 方法时代码继续运行,但我认为端口停止连接。那么,您知道如何让代码休眠而不损坏计算机吗?

sleep 功能

function sleep(milliseconds) {

var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
for(var j=0;j<10000000;j++)
if ((new Date().getTime() - start) > milliseconds){
return;
}
}
}

端口代码

chrome.runtime.onConnect.addListener(function(port) {
console.assert(port.name == "knockknock");

port.onMessage.addListener(function(msg) {
console.log("mesajjj");
if (msg.joke == "Baslat"){
setTimeout(firstwaiting, 5000);
console.log("wait");
}
});

});

function firstwaiting(){
port.postMessage({question: "waited"});
console.log("waited, now goes on");
}

我使用 setTimeout 方法的第二种方式收到“第一次等待时未定义端口”错误。连接没有问题,它可以使用 sleep 功能,但我需要更好的方法。

我希望在不花费太多精力的情况下延迟。我尝试了好几天,但即使在网上我也找不到方法。提前致谢。

最佳答案

您的sleep函数实际上并不休眠/等待,它只是阻塞页面的主线程。在 JavaScript 中,唯一正确的 sleep 方法是 setTimeout/setInterval 和类似的内置函数。

解决方案:不要使用 sleep(),只需将端口 作为参数传递给计时器回调即可。

chrome.runtime.onConnect.addListener(function (port) {
port.onMessage.addListener(function (msg) {
if (msg.joke == 'Baslat') {
setTimeout(firstwaiting, 5000, port);
}
});
});

function firstwaiting(port) {
port.postMessage({question: 'waited'});
}

关于javascript - 如何让 Chrome 扩展程序休眠一段时间并在端口上发布消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57569224/

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