Yes, it might produce the desired behavior, but its kinda hacky, could break if in the future requestAnimationFrame changes implementation etc.

If you want a 30fps game, setInterval should be enough to satisfy the need, using requestAnimationFrame and try to make it render at 30fps adds an extra overhead to calculate time, and possibly many more disadvantages that RequestAnimationFrame is implemented differently for different browsers.

the only advantage of RequestAnimationFrame over setInterval for a 30FPS game is it has higher priority over setInterval.
this priority, if combined with the side effect of requestAnimationFrame can fire as often as possible could jam other setInterval that is running outside the Cocos2d game.