Tengo una función de ejecución prolongada que se puede llamar varias veces en un período corto de tiempo. Realmente no necesito esperarla, así que quiero lo siguiente: si la instancia anterior de la función aún se está ejecutando, las próximas ejecuciones deben esperar a que finalice la anterior.
¿La forma más simple/correcta de resolver?
He creado un pequeño paquete llamado mutually-exclusive-functions que es capaz de hacer lo que quieras.
const { exclude } = require("mutually-exclusive-functions"); async function f1() {}; [f1] = exclude([f1]); Ahora, si ejecuta f1 , pondrá en cola más llamadas y solo las ejecutará después de que las llamadas anteriores hayan terminado de ejecutarse.