Skycons ломаются при вызове Forecast.io API с временным интервалом

0

Я использую Forecast.io API с Skycons для значков в функции, которая вызывает API каждые n секунд.

При вызове второй функции значок исчезает. Интересно, что при настройке значка с жестко запрограммированным значком он работает, и я смущен. Что я делаю не так?

Мой скрипт:

var counter = 0;
var skycons = new Skycons({
    "color": "#6c5848"
});

var data;
var apiKey = '6b5c02819a985881e46287c6507a9800';
var lati = 50;
var longi = 25;
var url = 'https://api.forecast.io/forecast/' + apiKey + '/' + lati + ',' + longi + '?callback=?&units=ca';

var callback = function (data) {

    var icon = data.currently.icon;
    var tempC = data.currently.temperature;
    var tempCfeel = data.currently.apparentTemperature;

    // Icon
    skycons.set( 'icon', icon ); // this line doesn't work and breaks the function
    //skycons.set('icon', Skycons.SNOW); // this line works

    // Temperature
    $('#temp').html(tempC.toFixed(1) + ' °C / feels like ' + tempCfeel.toFixed(1) + ' °C');

    counter++;
    $('#counter').html(counter + ' API calls');
};

var fetchForecast = function () {
    $.getJSON(url, callback);
};

fetchForecast();
skycons.play();
setInterval(fetchForecast, 5000);

jsFiddle

3 ответа

1

Попробуй это:

    var apiKey = '6b5c02819a985881e46287c6507a9800';
    var lati = 50;
    var longi = 25;
    var url = 'https://api.forecast.io/forecast/' + apiKey + '/' + lati + ',' + longi + '?callback=?&units=ca';
    var fetchForecast = function () {
        var counter = 0;
        var skycons = new Skycons({
            "color": "#6c5848"
        });
        $.getJSON(url, function (data) {

            var icon = data.currently.icon;
            var tempC = data.currently.temperature;
            var tempCfeel = data.currently.apparentTemperature;

            // Icon
            skycons.set( 'icon', icon ); // this line doesn't work
            //skycons.set('icon', Skycons.SNOW); // this line works

            // Temperature
            $('#temp').html(tempC.toFixed(1) + ' °C / feels like ' + tempCfeel.toFixed(1) + ' °C');

            counter++;
            $('#counter').html(counter + ' API calls');


            skycons.play();

        });
    };
    setInterval(function(){


        fetchForecast();

    }, 1000);

Счетчик разоряется, но проверяйте консоль, ее запросы на стрельбу каждую секунду

0

У меня такая же проблема, я исправил ее с помощью набора строк типа wheater.

var icon = String(data.currently.icon);
0

При использовании строки из Forecast.io вы должны заключить ее в кавычки. Где вы используете icon которая заменяет что-то наподобие partly-cloudy-night, когда вы передаете ее в небо, она должна быть в кавычках. Надеюсь, это имеет смысл.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню