Übung JavaScript Meteo Http
Ausgangslage
Neu wollen wir die Temperaturen über die URL https://www.simtech-ag.ch/education/internet/jjas/resources/meteo/http/temperatures.json und dem NodeJS Http Module laden.
Die main.js Anwendung soll die Daten wie dem neu zu programmierenden MeteoDataHttpJSON Objekt asynchron lesen via Callback Funktion:
let meteoDataHttpJSON = new MeteoDataHttpJSON('https://www.simtech-ag.ch/education/internet/jjas/resources/meteo/http/temperatures.json', () => {
MeteoRun(meteoDataHttpJSON);
});
Die Klasse MeteoDataHttpJSON zeigt das folgenden Gerüst:
import MeteoData from './MeteoData.js';import http from 'http';
export default class MeteoDataHttpJSON extends MeteoData {
constructor(url, callback) {
super();
this.url = url;
this.callback = callback;
var options = {
host: 'www.simtech-ag.ch',
path: '/education/internet/jjas/resources/meteo/http/temperatures.json'
};
http.request(options, this.httpCallback.bind(this)).end();
}
httpCallback(response) {
let jsonData = '';
//another chunk of data has been received, so append it to `str`
response.on('data', function (chunk) {
jsonData += chunk;
});
let _this = this;
//the whole response has been received, so we just print it out here
response.on('end', function () {
// TODO
_this.callback();
});
}
}
Interessant ist der Aufruf this.httpCallback.bind(this), damit bindet man die Methode an das richtige Objekt.
Vorgehen
Lösen Sie bitte die Aufgabe wie folgt:
- Kopieren Sie die Lösung Meteo Data um in ein neues Verzeichnis.
- Erstellen Sie die Datei MeteoDataHttpJSON.js gemäss dem obigen Programmgerüst MeteoDataHttpJSONy und programmieren Sie die fehlende //TODO Sequenz aus.
- Passen Sie das Hauptprogramm (z.B. main.js) gemäss dem obigen Script mit der Variante Http JSON an.
- Testen Sie das Resultat.
Lösung
Eine mögliche Lösung finden Sie hier