menu
{$Head.Title}}

Übung JavaScript Meteo Http

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

  1. Kopieren Sie die Lösung Meteo Data um in ein neues Verzeichnis.
  2. Erstellen Sie die Datei MeteoDataHttpJSON.js gemäss dem obigen Programmgerüst MeteoDataHttpJSONy und programmieren Sie die fehlende //TODO Sequenz aus.
  3. Passen Sie das Hauptprogramm (z.B. main.js) gemäss dem obigen Script mit der Variante Http JSON an.
  4. Testen Sie das Resultat.
Lösung

Eine mögliche Lösung finden Sie hier