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

243
Visualizações
¿Cómo hacer que una función devuelva una promesa en JavaScript?

Estoy tratando de hacer una función que tome una serie de objetos y forme una tabla a partir de ellos. Pero quiero que sea como esas promesas donde podemos tener promise().then().catch() básicamente solo quiero la .then() y .catch() en mi función. Intenté hacer esto:

 function makeTable(tableContent) { tableContent.forEach((cell) => { let type = cell.type return new Promise(function(resolve, reject){ if (type === "th" || type === "tr") { resolve("works") } else { reject(`Cell type must be either "th" or "tr" you passed "${type}"`) } }) }) } let table = [ { type: "pf", }, ] makeTable(table).then(()=>console.log("Success!")).catch(err=>console.log(err))

Pero obviamente esto no funciona. Quería obtener esta funcionalidad porque solo quería saber más sobre las promesas y quería crear una función que pudiera hacer lo mismo. Desafortunadamente, no puedo encontrar ningún lugar en Internet que responda esto. Gracias por leer esta pregunta!!

Algunas personas preguntan si por qué realmente necesito hacerlo aunque puedo hacerlo de otras maneras. ¿Por qué sólo promesas? Bueno, en realidad solo quiero jugar con ellos para poder entenderlos mejor y esa es la razón de esta pregunta.

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

0

Ser "un gran admirador de las promesas" es una cosa, pero usarlas donde no son absolutamente necesarias es simplemente una mala educación.

Dicho esto, si desea operar con una serie de promesas, puede usar Promise.all() :

 function makeRow(row) { return Promise.all(row.map(({type}) => new Promise((resolve, reject) => { if (type === 'th' || type === 'td') { resolve('Works'); } else { reject(`Cell type must be either "th" or "td" you passed "${type}"`) } }))); } const row = [{ type: 'th' }, { type: "pf" }]; makeRow(row) .then(() => console.log("Success!")) .catch(console.dir);

about 4 years ago · Juan Pablo Isaza Relatório

0

Vale la pena señalar que en realidad no necesita promesas aquí, ya que todo es sincrónico. Dicho esto, si quieres hacer esto, tienes 2 enfoques.

Puede devolver una sola Promesa al final de todo:

 function makeTable(tableContent) { return new Promise((resolve, reject) => { tableContent.forEach((cell) => { let type = cell.type; if (type !== 'th' && type !== 'tr') { reject(`Cell type must be either "th" or "tr" you passed "${type}"`); } }); resolve('works'); }); }

o puede devolver una Promesa para cada artículo, convirtiendo cada uno en una Promesa y envolviéndolos con Promise.all()

 function makeTable(tableContent) { return Promise.all( tableContent.map((cell) => { let type = cell.type; return new Promise(function (resolve, reject) { if (type === 'th' || type === 'tr') { resolve('works'); } else { reject(`Cell type must be either "th" or "tr" you passed "${type}"`); } }); }) ); }
about 4 years ago · Juan Pablo Isaza Relatório

0

Bueno. Entonces, en primer lugar, no creo que haya ninguna necesidad de Promesas aquí. Y no debemos abusar del concepto ya que puede causar problemas de rendimiento. Si aún desea usar promesas, puede devolver la matriz de promesas y puede recorrer allí.

 function makeTable(tableContent) { let prmsArr = []; tableContent.forEach((cell) => { let type = cell.type; prmsArr.push(new Promise(function(resolve, reject){ if (type === "th" || type === "tr") { console.log('Hi'); resolve("works"); } else { console.log('Hello'); reject(`Cell type must be either "th" or "tr" you passed "${type}"`); } })); }); return prmsArr; } let table = [ { type: "pf", }, { type: "tr", }, ]; makeTable(table).forEach(prms => prms.then(()=>console.log("Success!")).catch(err=>console.log(err)));

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