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

171
Visualizações
¿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 Respostas
Responde à pergunta

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 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