Node.jsでsetTimeoutしたら戻り値がtimerIdじゃなかった

Node.jsでsetTimeoutしたら戻り値がtimerIdじゃなかった:

Node.jsの熟練者の人は常識かもしれませんが。。。。


きっかけはJSON.stringify()

Node.jsでJSON.stringify()を使うことがあったんですよ。

そしたらJSON.stringify()からエラーが発生するんです。

(node:9372) UnhandledPromiseRejectionWarning: TypeError: Converting circular structure to JSON 
なんだこれって思ってググっても、循環させるなって書いてあるんです。

別に循環させてるところなんてないし、なんでだろう、なんでだろうって思ってログ出してみたんです。

そしたら、ある一つの要素にsetTimeoutの戻り値いれてたところがあったんですが、数値じゃなくてオブジェクトだったんです!!!


Node.jsでsetTimeoutしたら戻り値がTimeoutクラスだった

フロント周りやっているとsetTimeoutの戻り値ってtimerIdだって思っているじゃないですか。

clearTimeoutで使用するために戻り値保持してたんです。

よくよく調べるとTimeoutクラスっていうのが返ってきてるらしいです。

https://nodejs.org/api/timers.html#timers_settimeout_callback_delay_args

普通に使ってれば、意識することないかもしれないですが、JSON.stringify()時はエラーがでるので気をつけて!

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)