gpt4 book ai didi

javascript - 如何在 setInterval(function(){...}) 中传递 Server Sent Event 对象

转载 作者:行者123 更新时间:2023-11-30 19:41:16 26 4
gpt4 key购买 nike

我想在一段时间后停止 SSE 并需要重新连接。

在 JavaScript 中使用 setInterval(function(){}) 会出现错误:

source.close(); // <<-- ERROR : object is not defined

谁能指导我解决问题?

<script>

if(typeof(EventSource) !== "undefined"){

var source = new EventSource("sse_server.php");

// ReConnecting ST
setInterval(function(){
console.log("ReConnecting...");

source.close(); // <<---------- ERROR : object is not defined

var source = new EventSource("sse_server.php");
}, 6000);
// ReConnecting EN

source.addEventListener("response", function(event) {
document.getElementById("result").innerHTML += "<p>" + event.data + "</p>";
});

source.addEventListener("message_status", function(event) {
document.getElementById("result").innerHTML += "<p>" + event.data + "</p>";
});

source.onmessage = function(event) {

var json = JSON.parse(event.data);

if(json.category=="chat") {
document.getElementById("result").innerHTML += "<p>" + json.content.messageContent.messageText + "</p>";
}else{
document.getElementById("result").innerHTML += "<p>" + event.data + "</p>";
}

};

} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events...";
}


</script>

最佳答案

看看这个:

source.close(); // <<---------- ERROR : object is not defined
var source = new EventSource("sse_server.php");

您在函数范围内定义了一个不同的变量,其名称相同。因为直到下一行才给它赋值,所以它是 undefined

如果您想从函数内更广泛的范围访问源代码,则不要在函数内为不同的变量重用该名称。

如果你想覆盖更广泛的变量中的source,那么从函数内部的行中删除var,这样你就可以使用现有的变量并且不要在本地范围内重新声明它。

关于javascript - 如何在 setInterval(function(){...}) 中传递 Server Sent Event 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55376157/

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