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

96
Visualizações
Anidación de métodos / funciones de clase asíncrona en JavaScript

así que este es mi código para la clase y lo que estoy tratando de hacer con él

 const getExternalDbInfo = require('./helperJS/get-external-db-info') class ExternalDb { constructor(extdb_user, extdb_password, extdb_privilege, extdb_ip, extdb_port, extdb_sid) { this.extdb_user = extdb_user, this.extdb_password = extdb_password, this.extdb_privilege = extdb_privilege, this.extdb_ip = extdb_ip, this.extdb_port = extdb_port, this.extdb_sid = extdb_sid } async getDbData(){ let data=await getExternalDbInfo(this.extdb_user, this.extdb_password, this.extdb_privilege, this.extdb_ip, this.extdb_port, this.extdb_sid); return this; } async getTablespace(){ console.log( getDbData().tablespace_data) return getDbData().tablespace_data } } const newDb= new ExternalDb("***"); (async function () { let x =await newDb.getDbData().getTablespace() console.log(x) })();

así que estoy tratando de encadenar a los métodos de clase (getDbData().getTablespace()) para que no tenga que llamar a la base de datos externa más de una vez. pero recibo el siguiente error: (nodo: 14468) UnhandledPromiseRejectionWarning: TypeError: newDb.getDbData(...).getTablespace no es una función . ¿Es esto posible o es algo que no entiendo porque soy un novato en la programación asíncrona? he intentado devolver {this, data} para el método getDbData(), pero no funcionó

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

No estoy seguro de si "anidar" es el término correcto aquí, parece que está tratando de llamar a un método desde el otro. La forma correcta de hacerlo es

 class ExternalDb { … async getDbData(){ const data = await getExternalDbInfo(this.extdb_user, this.extdb_password, this.extdb_privilege, this.extdb_ip, this.extdb_port, this.extdb_sid); return data; // ^^^^ } async getTablespace(){ const data = await this.getDbData(); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ console.log(data); return data.tablespace_data; } }

Entonces no encadenarías nada, sino que simplemente llamarías

 const x = await newDb.getTablespace(); console.log(x);
about 4 years ago · Santiago Trujillo 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