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
ループ内で 'f()'の周りにtry-catchを置いて、catch内で 'clearTimeout(timer)'を呼び出せますか?私は試したおもちゃの例のために働いた。私は私の答えでコードを更新しました。 – SilentLupin
これは機能し、私はあなたの最初の答えに、それを好む! – Baz