setTimeout & setInterval
Suitable for general use. Less accurate in inactive tabs (ref: ).
requestAnimationFrame
Should run in active tabs.
AudioBufferSourceNode
It has lower accurary at initial startup than OscillatorNode and ConstantSourceNode.
However, from the second time onwards, the accuracy is higher than theirs.
OscillatorNode & ConstantSourceNode
Suitable for audio playback or when you need a high-precision timer in inactive tabs.
It is less accurate than setTimeout and setInterval in active tabs.