Node.jsでsetTimeoutしたら戻り値がtimerIdじゃなかった
Node.jsでsetTimeoutしたら戻り値がtimerIdじゃなかった:
Node.jsの熟練者の人は常識かもしれませんが。。。。
Node.jsでJSON.stringify()を使うことがあったんですよ。
そしたらJSON.stringify()からエラーが発生するんです。
なんだこれって思ってググっても、循環させるなって書いてあるんです。
別に循環させてるところなんてないし、なんでだろう、なんでだろうって思ってログ出してみたんです。
そしたら、ある一つの要素にsetTimeoutの戻り値いれてたところがあったんですが、数値じゃなくてオブジェクトだったんです!!!
フロント周りやっているとsetTimeoutの戻り値ってtimerIdだって思っているじゃないですか。
clearTimeoutで使用するために戻り値保持してたんです。
よくよく調べるとTimeoutクラスっていうのが返ってきてるらしいです。
https://nodejs.org/api/timers.html#timers_settimeout_callback_delay_args
普通に使ってれば、意識することないかもしれないですが、JSON.stringify()時はエラーがでるので気をつけて!
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()時はエラーがでるので気をつけて!
コメント
コメントを投稿