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

281
Visualizações
La promesa da como resultado un TypeError no detectado: func_get_db_data no es una función

Estoy construyendo una demostración que imita la estructura de solicitud/recepción de datos de una base de datos. La salida debe ser solo un registro de consola de la matriz devuelta.

Recibo el mensaje Uncaught TypeError: func_get_db_data is not a function

Vi esta pregunta TypeError: #<Promise> no es una función

Pero la respuesta es un poco demasiado específica para que yo la aplique a mi situación. ¿Cómo puedo entender la solución aquí?

 let func_get_db_data = new Promise((resolve, reject) => { resolve([ {name: 'Bob', gender:'m', class:'junior', job: 'Teacher'}, {name: 'Dan', gender:'m', class:'senior', job: 'Detective'}, {name: 'Ann', gender:'f', class:'junior', job: 'Analyst'}, {name: 'Sue', gender:'f', class:'retired', job: 'Accountant'} ]); }); const tableData = func_get_db_data().then( (data) => { return data; }); console.log(tableData);

Actualizar

Basado en los comentarios a continuación, probé esto (pero no lo entendí del todo... simplemente devuelve un objeto vacío)

 let func_get_db_data = () => { return [ {name: 'Bob', gender:'m', class:'junior', job: 'Teacher'}, {name: 'Dan', gender:'m', class:'senior', job: 'Detective'}, {name: 'Ann', gender:'f', class:'junior', job: 'Analyst'}, {name: 'Sue', gender:'f', class:'retired', job: 'Accountant'} ]; }; const getTables = new Promise(func_get_db_data); getTables.then( (data) => { return data; }); console.log(getTables);

Lo que realmente me gustaría es estructurar el código para que una estructura como esta devuelva los datos:

 const tableData = func_get_db_data().then( (data) => { return data; });
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

No puede inicializar una variable en un objeto de promesa y luego invocarlo, debe ser invocado por una función para devolver el valor.

Simplemente envuelva la promesa en una función y devuélvala. Ahora puede invocarlo y tener acceso a los métodos de promesa.

Sin embargo, la forma en que intenta recuperar los datos de la promesa es un problema con la estructura del programa. Básicamente, si desea mantener ese tipo de estructura de código, debe usar el paradigma async/await; de lo contrario, debe trabajar dentro del .then() de la promesa para comenzar a usar sus datos.

Ejemplo:

 const func_get_db_data = () => { return new Promise((resolve, reject) => { return resolve([ {name: 'Bob', gender:'m', class:'junior', job: 'Teacher'}, {name: 'Dan', gender:'m', class:'senior', job: 'Detective'}, {name: 'Ann', gender:'f', class:'junior', job: 'Analyst'}, {name: 'Sue', gender:'f', class:'retired', job: 'Accountant'} ]) }) } async function main() { const tableData = await func_get_db_data(); console.log("tableData: ", tableData); } main()

Todo dentro de la función asíncrona se procesará sincrónicamente ya que la ejecución del programa solo continuará una vez que func_get_db_data() se haya resuelto y devuelva un valor a tableData.

Según la estructura de su programa, especialmente porque está tratando de inicializar una variable con el valor de retorno de un objeto de promesa resuelto, sería mejor usar el paradigma async/await.

Si desea usar el encadenamiento de promesas, también está bien, pero toda la lógica que desea realizar en función de los datos de resolución está confinada dentro de .then() así:

 const func_get_db_data = (query) => { return new Promise((resolve, reject) => { return resolve([ {name: 'Bob', gender:'m', class:'junior', job: 'Teacher'}, {name: 'Dan', gender:'m', class:'senior', job: 'Detective'}, {name: 'Ann', gender:'f', class:'junior', job: 'Analyst'}, {name: 'Sue', gender:'f', class:'retired', job: 'Accountant'} ]) }) } func_get_db_data() .then(resolve => { console.log("table data: ", resolve); //example data parsing const tableData = resolve.slice(0, 1); return tableData; }) .then(resolve2 => console.log("resolve2: ", resolve2)) .catch(err => console.log(err))

Entonces, si desea inicializar las variables a un valor prometido, debe usar el enfoque asíncrono/esperar, pero también puede utilizar el encadenamiento de promesas.

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