¿Algo en esta dirección? Aquí los trabajos no están definidos en las funciones addJob y runNext, ¿existe la posibilidad de obtener este trabajo?
const myThing = { jobs: [], addJob: (id, job) => { jobs.push({id: id, job: job}) }, runNext: () => { jobs.shift().job() } }Puede usar una función de fábrica o una clase para lograr esto:
Función de fábrica:
function myThing() { const jobs = []; return { addJob: (id, job) => { jobs.push({ id: id, job: job }) }, runNext: () => { jobs.shift().job() }, print: () => { console.log(jobs); } }; } const instance = myThing(); instance.addJob("someId", "someJob") instance.print();Clase:
class MyThing { jobs = []; addJob(id, job) { this.jobs.push({ id: id, job: job }); } runNext() { this.jobs.shift().job() } print() { console.log(this.jobs); } } const instance = new MyThing(); instance.addJob("someId", "someJob"); instance.print();