Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

298
Vistas
Clase asíncrona NodeJS con patrón de diseño singleton

Problema: implemente el patrón de diseño singleton con llamadas asíncronas en la clase. No puedo obtener los valores cuando importo el módulo a un segundo archivo.

Caso: Eventualmente, quiero implementar esta lógica para una actualización de token de portador cuando expire. Tengo múltiples funciones que se basan en el token. Entonces, cuando obtenga un 403, actualizaré el token y todas las demás funciones también tendrán acceso a este token actualizado.

Guión 1:

 //File1.js import axios from "axios"; async function getJson(n) { const req = await axios.get( `https://jsonplaceholder.typicode.com/todos/${n}` ); return req.data.title; } class Todo { constructor() { if (Todo.instance == null) { this.title; Todo.instance = this; } return Todo.instance; } async init() { this.title = await getJson(1); } async updateTodo(n) { this.title = await getJson(n); } getTodo() { return this.title; } } const todo = await new Todo().init(); export default todo;

Guión 2:

 const todo = await import('./File1.js'); console.log(todo); //[Module: null prototype] { default: [AsyncFunction (anonymous)] } todo.updateTodo(3) //TypeError: todo.updateTodo is not a function

Guión 2.1:

 import todo from './File1.js'; await todo.init(); console.log(todo.getTodo()) await todo.updateTodo(2) console.log(todo.getTodo())
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Las importaciones dinámicas son diferentes de las importaciones regulares. Cuando tu lo hagas:

 import module from "./module.js";

module será igual a la exportación por defecto, algo como:

 // module.js export default function module() { // do something }

Sin embargo, en las importaciones dinámicas ( import() ), debe acceder manualmente a la exportación predeterminada:

 const importModule = await import("./module.js"); const module = importModule.default; module(); // default export module

Así que en tu código estarías haciendo:

 todo.default.updateTodo(3);
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda