我想用Java中的网络侦听器执行一个函数(在此上下文中称为回调)。当侦听器检测到良好的模式时,它将调用回调函数,并且此函数永不停止... 所有这些都是通过browser.webRequest.onBeforeRequest.addListener
完成的具有browser.webRequest.onBeforeRequest.addListener()的weblistener检测到良好的模式,然后调用发出GET请求的关联函数。完成后,一次又一次完成GET请求
function getResponseFromSP()
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
console.log(xmlHttp.response);
browser.webRequest.onBeforeRequest.removeListener(getResponseFromSP);
if(!browser.webRequest.onBeforeRequest.hasListener(getResponseFromSP)){
browser.webRequest.onBeforeRequest.addListener(
getResponseFromSP,
{urls: ["https://example.com/policy"]}
);
}
}
}
xmlHttp.open("GET", "https://example.com:5000/policy", true); // true for asynchronous
xmlHttp.responseType = 'json';
xmlHttp.send(null);
}
/*
Main part
*/
browser.webRequest.onBeforeRequest.addListener(
getResponseFromSP,
{urls: ["https://example.com/policy"]}
);
答案 0 :(得分:0)
一种常见的解决方案是在适当的范围内创建一个变量,在要执行该函数时检查其是否为false,但在执行后将其设置为true。
var isDone = false;
// ...
if(!isDone) {
// ... execute the function on the event being listened for here, then set
isDone = true;
}