Provedení kódu po příštím překreslením stránky

Na začátek, tento příspěvek je inspirován problémem provedení kódu po změně v DOMu podrobně popsaného v When DOM Updates Appear to Be Asynchronous. Problémem je, že window.requestAnimationFrame volá callback před následujícím překreslením viz dokumentace.


Kombinací dvou window.requestAnimationFrame zařídíme zavolání callbacku před druhým následujícím překreslení. Obecná funkce by mohla vypadat nějak takto:

1
2
3
4
5
6
7
8
9
10
11
12
13
function requestNextAnimationFrame(callback){
    return requestAnimationFrame(
        requestAnimationFrame.bind(null,
            callback
    ));
}
function requestNextAnimationFrame_(){
    return new Promise(resolve=>
        requestAnimationFrame(
            requestAnimationFrame.bind(null,
                resolve
    )));
}

Funkce pro zavolání callbacku po příštím překreslení stránky (podtržítko mám jako úzus pro funkce vracející Promise)