What is the difference between setTimeout and setInterval?

When can each be used? is it a good practice to use both interchangeably since both can be used to time-related effects?