Q:

setTimeout не работает если покинуть вкладку

Нажимаю кнопку сохранить. Вызывается setTimeout с задержкой 1500. 
Далее сразу покидаю вкладку, однако данные не обновляются, так как setTimeout не отработал. Хотя предполагается что он должен сохранить данные с некоторой задержкой. 
Можно ли как то гарантировать выполнение некоторых данных с задержкой даже при переключении на другую вкладку?

A:

Вместо setTimeout я предлагаю вам использовать requestAnimationFrame.
В примере кода ниже, когда вы запустите анимацию и переключите вкладку, а затем вернетесь обратно, вы увидите, что не смотря на смену вкладки, анимация продолжалась дальше. Таким образом, вы можете использовать requestAnimationFrame вместо setTimeout (причем использовать можно не только для анимации). 
Подробнее почитайте тут и тут.

var div = document.querySelector('div');

var start = 100;

function step(timestamp) {
    var progress = timestamp - start;
    a = Math.min(progress/10, 20000) + "px";
    div.style.left = a
    
    if (progress < 20000) {
      requestAnimationFrame(step);
    }
}

requestAnimationFrame(step)
div {
    position: absolute;
}
<div>test</div>

