Por lo que me gusta la documentación, parece que para definir la devolución de llamada para la animación, es necesario:
onfinish¿Hay alguna manera de hacer las mismas cosas con una expresión como se muestra a continuación?
Snackbar.rootElement.animate([ { opacity: 1, transform: "none" }, { opacity: 0, transform: "translateY(-200%)" } ], { duration: 500, easing: "ease-in" }) // ↓ [Warning] It just a desired syntax, NOT A VALID SYNTAX .onfinish(() => { Snackbar.rootElement.remove(); });onfinish es un setter, no un método; si lo asigna en lugar de llamarlo como una función, funcionará:
console.log('start'); const d = document.createElement('div'); const res = d.animate([ { opacity: 1, transform: "none" }, { opacity: 0, transform: "translateY(-200%)" } ], { duration: 500, easing: "ease-in" }) .onfinish = (() => { console.log('finished'); }); Otra opción, con addEventListener :
console.log('start'); const d = document.createElement('div'); const res = d.animate([ { opacity: 1, transform: "none" }, { opacity: 0, transform: "translateY(-200%)" } ], { duration: 500, easing: "ease-in" }) .addEventListener('finish', () => { console.log('finished'); });Por razones similares, lo siguiente no funciona:
const obj = { set foo(arg) { console.log('called foo'); } }; obj.foo(123);El setter se puede invocar asignándolo, pero no llamándolo como si fuera una función (aunque es una función internamente).