我正在为在浏览器中运行的代码实现交互式调试工具。当我到达“断点”时,我需要调用调试器并等待所需的操作,其中当然可能包括“继续”命令以进一步执行脚本。
为此,我编写了一个小型 node.js 网络服务器,它使用长轮询技术处理那些“调试”请求。调试器界面在另一个浏览器窗口中运行,并与 node.js 网络服务器通信,因此命令可以有效地从另一个浏览器发送到正在调试的脚本。
正在调试的脚本中的“暂停”是使用同步请求实现的,该同步请求在一个for(;;)
循环中最多需要 N 秒,当接收到命令时可以退出该循环"cont"
。如果程序员没有在限制范围内使用调试器接口发送命令,服务器会自动发送“等待更多”答案,并且脚本保持在无限循环中。
一切都很好,除了浏览器(在这种情况下是 Chrome)一段时间后会弹出一个对话框,告诉正在调试的脚本被卡住并提供杀死它的选项。无论 N 的值是多少,都会发生这种情况。
有没有办法在不让浏览器杀死脚本的情况下等待命令?可以更改超时吗?
请注意,更改脚本以使用回调逻辑,就像在浏览器中编程时通常所做的那样是不可能的(除非您正在谈论对通用程序执行完整的CPS 转换,而我不想去那里)。