2 votes

Afficher index.html après avoir effectué d'autres actions

J'ai une application qui obtient des informations météorologiques et les affiche ensuite sur une page. Voici un extrait de mon code.

app.post ('/weather',function(req,res){
  let city = req.body.city;
  $('#text').text(city);
  fs.writeFileSync(__dirname + '/index.html', $.html());
  getWeatherData(city);
  res.sendFile(__dirname + '/index.html');
});

J'ai compris que Node.js dispose d'une architecture événementielle capable d'effectuer des E/S asynchrones, mais comment puis-je faire cette action ? res.sendFile(__dirname + '/index.html'); a été fait en dernier ? Parce que maintenant j'ai des informations météorologiques, je les écris dans index.html, mais j'affiche l'ancienne version d'index.html.

0voto

Ank i zle Points 1109

Vous pouvez mettre le res.sendFile à l'intérieur du callback de fs.writeFile Comme ça :

fs.writeFile(__dirname + '/index.html', html, () => {
  getWeatherData(city)
  res.sendFile(__dirname + '/index.html');
});

Il semble également que vous écriviez un fichier différent pour chaque utilisateur. C'est juste une suggestion, mais je recommanderais de regarder dans carlin pour le faire avec plus d'efficacité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X