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

165
Vistas
¿Hay algún método de clase incorporado de JS que se ejecute solo una vez cuando se hace referencia a cualquier método?

Tengo una clase para recargar algunos elementos.

 const getMe = async () => await fetchURL("https://MY.SITE/api/users/me") .then((res) => res.data); class loader { EVERYonceWHENmethodCALLED() { self.ME = (async () => await getMe())(); } me() { $("#me").html(`${self.ME.grade}${self.ME.number}[Tickets: ${self.ME.likeTicket}]`); } // ** likeTicket depends on ME ** async chart() { if ($("body").find("#chart").length) { const musicChart = await fetchURL(`https://MY.SITE/api/music/chart?&gender=${self.ME.gender}`); $("#chart").html(await listElementsOf(musicChart.data.list)); } // ** listElementsOf depends on ME ( It lets me know what musics I 'liked' to ) ** } async search(q) { if ($("body").find("#searchResult").length){ if(q) $("#searchResult").attr("data-q", q); else q = $("#searchResult").attr("data-q"); const searchResult = await fetchURL(`https://MY.SITE/api/music/search?q=${q}`); $("#searchResult").html(await listElementsOf(searchResult)); } } meAndChart() { self.me(); self.chart(); } loadEverything() { self.meAndChart(); self.search(); } }

Necesito recargar ME antes de recargar cualquier otro elemento, y estoy buscando una manera de hacerlo. Puedo emplear new como new loader.me(); , pero no quiero usar new cada vez.

¿Hay alguna manera para el trabajo previsto? Gracias por leer.

about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Hice algunos cambios en tu código:

  • cambie EVERYonceWHENmethodCALLED para que ME se establezca en el objeto esperado en lugar de una promesa.
  • Usar this en lugar de self para el objeto actual (ver aquí para más detalles).
  • me cambió el nombre y chart a _me y _chart respectivamente.
  • Se agregaron métodos me y chart que llaman a los métodos internos después de EVERYonceWHENmethodCALLED .
  • meAndChart actualizado para llamar a los métodos internos después de EVERYonceWHENmethodCALLED .

Tenga en cuenta que generalmente es una buena práctica (y a menudo necesaria) llamar a funciones async con await , y eso requiere que las funciones de llamada también sean async .

 const getMe = async () => await fetchURL("https://MY.SITE/api/users/me") .then((res) => res.data); class loader { async EVERYonceWHENmethodCALLED() { this.ME = await getMe(); } _me() { $("#me").html(`${this.ME.grade}${this.ME.number}[Tickets: ${self.ME.likeTicket}]`); } // ** likeTicket depends on ME ** async _chart() { if ($("body").find("#chart").length) { const musicChart = await fetchURL(`https://MY.SITE/api/music/chart?&gender=${self.ME.gender}`); $("#chart").html(await listElementsOf(musicChart.data.list)); } // ** listElementsOf depends on ME ( It lets me know what musics I 'liked' to ) ** } async me() { await this.EVERYonceWHENmethodCALLED(); this._me(); } async chart() { await this.EVERYonceWHENmethodCALLED(); await this._chart(); } async search(q) { if ($("body").find("#searchResult").length){ if(q) $("#searchResult").attr("data-q", q); else q = $("#searchResult").attr("data-q"); const searchResult = await fetchURL(`https://MY.SITE/api/music/search?q=${q}`); $("#searchResult").html(await listElementsOf(searchResult)); } } async meAndChart() { await this.EVERYonceWHENmethodCALLED(); this._me(); await this._chart(); } async loadEverything() { await this.meAndChart(); await this.search(); } }
about 4 years ago · Santiago Gelvez 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