Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

168
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!