0
如果ws.send引发下面的代码的异常,我想确保我停止递归发送并且客户端线程结束。如何处理递归setTimeout模式中的异常
function newAlarm(ws)
{
ws.send(alarm);
}
function loop(f,t)
{
setTimeout(() => loop(f,t), t);
f();
}
loop(() => newAlarm(ws),10000);
据我所知,捕获错误的ws.send
,我做到以下几点:ws.send(alarm, err => {if(!err){...}})
但我无法弄清楚如何为setTimeout的做到这一点。
但newAlarm不再是一个纯函数。 – Baz
你可以在你的循环中放一个try-catch到'f()'并在catch中调用'clearTimeout(timer)'?它适用于我尝试过的玩具例子。我在我的答案中更新了代码。 – SilentLupin
这个作品,我更喜欢你的第一个答案,谢谢! – Baz