javascript - try catch 不适用于 sse

标签 javascript google-chrome google-chrome-devtools server-sent-events

这是代码,P.S:s10中的服务httpd已停止

        try {
            var source = new EventSource("http://s10/server.php");
            console.log(source);
        } catch (e) {
            console.log("ADSfasfasfasdfasdfas" + e)
        }

这是控制台: enter image description here

为什么 try catch 没有捕获错误?

当然我有 onerror 事件和 onclose 事件:

        source.addEventListener('error', function(e) {
            if (source.readyState == 2) {
                connectionClosed();//to change some style
                console.log("Disconnected");
            }

        }, false);

        source.onerror = function(e) {
            if (source.readyState != 0) {
                connectionClosed();//to change some style
                console.log("Disconnected");
            }
        };
        source.onclose = function() {
            connectionClosed();//to change some style
            console.log('Connection closed');
        }

最佳答案

当我在控制台中对未设置为处理 SourceEvents 的任意 URL 运行此命令时,控制台会成功记录 SourceEvent 实例。这与您所描述的类似。

SourceEvent

所以我的猜测是没有要捕获的错误。即使没有实际连接,SourceEvent 实例也已成功构造。如果您想检测连接是否正常工作,请使用 EventSource.readyState 属性。

在我的屏幕截图中,您可以看到 readyState = 0,这意味着连接正在“连接”,但实际上它永远不会完成连接,因为另一端的服务器没有完成连接设置为处理 SourceEvents。

https://developer.mozilla.org/en-US/docs/Web/API/EventSource/readyState

关于javascript - try catch 不适用于 sse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18866924/

相关文章:

javascript - jQuery - 检查各种输入类型的值

javascript - Chrome 没有选择源 map ,尽管它已启用

javascript - Google Chrome 开发者工具 - 无法设置断点

javascript - Angular : updating view with value passed from directive to controller

javascript - 由于一些神奇的隐藏数字,CSS 类将无法工作

javascript - 如何在 SQL 中保存 OFFSET 的当前状态

css - Chrome 中的位置固定中断,适用于 FF

performance - Chrome 开发者工具中的空闲和其他时间。为什么浏览器长时间不活动?

javascript - 为什么选择多个文件在 chrome 浏览器上不起作用?

javascript - 文件显示在“源”选项卡中但不在“网络”中