0
votes

Pourquoi la réponse de Axios ne peut pas changer de valeur de variable

const axios = require('axios');
const url = '';
const urlMovies = 'http://localhost:3001/'
const axiosServer = axios.create({
  baseURL: url,
});

class EntertainMeController {
  static readEntertainMe(req, res) {    
    let movies;
    let tvseries;

    axiosServer({
      url: urlMovies,
      method: 'get',
    })
    .then(({ data }) => {
      movies = data;
    }

   res.status(200).json({
    movies
   })
 }
}i write this code inside controllers, router.get('/', EnternainMeController.readEntertainMe)
movies is undifined, any help please

0 commentaires

3 Réponses :


0
votes

Essayez-le comme ceci:

  static async readEntertainMe(req, res) {    
    let movies;
    let tvseries;

   let { data } = await axiosServer({
      url: urlMovies,
      method: 'get',
   })
   movies = data;
   res.status(200).json({
     movies
   })


0 commentaires

0
votes

Essayez d'ajouter res.Status à l'intérieur du bloc. Ensuite, le bloc sera exécuté de manière asynchrone à partir du flux de code principal.

Également si cela aide, vous pouvez supprimer la variable des films. P>

axiosServer({
  url: urlMovies,
  method: 'get',
})
.then(({ data }) => {
  movies = data;
  res.status(200).json({
    movies
  })
}


0 commentaires

0
votes

One Dower Réponse: Utilisez Var Films au lieu de Laissez les films .

a expliqué: il s'agit d'un problème de cadrage lexical pouvant être traité avec des fermetures. Vous avez besoin d'accès à la fonction de fonction extérieure. Une fermeture est la combinaison d'une fonction groupée ensemble (fermée) avec des références à son état environnant (l'environnement lexical). En d'autres termes, une fermeture vous donne accès à une fonction de fonction extérieure à partir d'une fonction interne. En JavaScript, les fermetures sont créées chaque fois qu'une fonction est créée, au moment de la création de fonction. https://developer.mozilla.org/en-us/docs/ Web / javascript / fermetures


0 commentaires