Skycons在按时间间隔调用Forecast.io API时中断
Skycons break when calling Forecast.io API with time interval
我使用带有Skycons的Forecast.io API作为函数中的图标,该函数每n秒调用一次API。
在第二次调用函数时,图标消失。有趣的是,当用硬编码的图标类型设置图标时,它是有效的,我很困惑。我做错了什么?
我的脚本:
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
试试这个:
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);
计数器被破坏,但检查控制台,其每秒触发一次请求
使用Forecast.io中的字符串时,必须将其括在引号中。当你使用icon
来代替partly-cloudy-night
时,当你把它传递到sky-cons中时,它必须用引号括起来。希望这是有道理的。
我有同样的问题,我用设置字符串类型的whiter来解决它。
var icon = String(data.currently.icon);
相关文章:
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 如何使用Socket.io将命令从客户端发送到服务器
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- Socket.IO未定义变量
- Socket.io on Mozilla Rhino
- 如何在Ionic2测试版中包含Ionic.io服务
- socket.io发射三次
- AngularJS$q承诺使用socket.io
- Atom.io中AngularJS的方法完成
- 如何知道使用socket.io订阅/取消订阅频道
- 可以't连接客户端和服务器import.io
- 通过socket.io发射给特定的人
- 通过socket.io从浏览器流式传输视频
- 通过node.js和socket.io向特定用户发送数据
- 拖动&删除Fullcalendar.io资源-更新视图
- 使用webdriver io在可滚动元素内滚动
- Trigger.io Collaboration
- Skycons在按时间间隔调用Forecast.io API时中断