Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

129
Visualizações
¿Cómo puedo crear una función de tarea que pueda retrasar y generar en un orden diferente en JavaScript?

Defina una función de tarea y el resultado después de la ejecución es el siguiente

 task('james') // james starts work task('james').waitFirst(5).do('push') // wait 5s, james do push, james starts work task('james').wait(5).do('commit') // james starts work, wait 5s, james do commit

No tengo idea de cómo crear una función de espera de este tipo, ¿alguien puede ayudarme con eso o darme algunas ideas?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Aquí está mi solución con una pequeña y molesta llamada .end() después de cada llamada task() .

 function task(name) { const register = {}; const preventCallAfter = (methodName) => { if (methodName in register) throw new Error(`You cannot use "wait" and "waitFirst" together.`); }; return { wait(seconds) { preventCallAfter("waitFirst"); register.wait = seconds; return this; }, waitFirst(seconds) { preventCallAfter("wait"); register.waitFirst = seconds; return this; }, do(workName) { if ("workName" in register) throw new Error(`The .do() method is already called.`); register.workName = workName; return this; }, end() { if ("wait" in register) { console.log(`${name} starts work.`); console.log(`wait ${register.wait} seconds.`); setTimeout( () => console.log(`${name} do ${register.workName}`), register.wait * 1000 ); } else if ("waitFirst" in register) { console.log(`wait ${register.waitFirst} seconds.`); setTimeout(() => { console.log(`${name} do ${register.workName}`); console.log(`${name} starts work.`); }, register.waitFirst * 1000); } else console.log(`${name} starts work.`); }, }; } // task("james").end(); // james starts work // task("james").waitFirst(5).do("push").end(); // wait 5s, chenlee do push, james starts work task("james").wait(5).do("commit").end(); // james starts work, wait 5s, james do commit

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda