javascript - 设置 json 调用的间隔以重新加载新图像

标签 javascript jquery

我正在尝试设置从 Flickr API 重新加载新图像的时间间隔。

我需要添加什么才能使页面使用 setInterval 抓取新图像。

这是我的代码:

$(document).ready(function(){
    $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
    {
        tagmode: "any",
        format: "json"
    },
    function(data) {
        var rnd = Math.floor(Math.random() * data.items.length);

        var image_src = data.items[rnd]['media']['m'].replace("_m", "_b");
        $('.main').css('background-image', "url('" + image_src + "')");
    });
});

最佳答案

我会使用 setTimeout 而不是 setInterval,以防由于网络延迟而需要超过 [interval] 秒的时间来获取图像。

$(document).ready(function() {
  var INTERVAL_IN_MS = 1000; // wait 1 second

  function getImage() {
    $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?", {
        tagmode: "any",
        format: "json"
      }, function(data) {
           var rnd = Math.floor(Math.random() * data.items.length);
           var image_src = data.items[rnd]['media']['m'].replace("_m", "_b");
           $('.main').css('background-image', "url('" + image_src + "')");

        // start the timeout countdown only after the previous image has been fetched and displayed
        window.setTimeout(getImage, INTERVAL_IN_MS);
      });
  }

  window.setTimeout(getImage, INTERVAL_IN_MS);
});

关于javascript - 设置 json 调用的间隔以重新加载新图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32950870/

相关文章:

JavaScript:如何将数组中的数据推送到子数组中,每 16 个项目有一个数组

javascript - jquery sortable() 允许拖放标题

javascript - JQuery 切换类有 2 个类?

javascript - 脚本加载完成后如何开始执行代码

javascript - 在 div 上滚动

javascript - HTML transient 模态窗口

javascript - 使用 Vue.js 从文本输入中按回车键时防止提交表单

Javascript 用 YouTube 视频替换 IMG - 自动播放无法正常工作

jquery - 单击每个 li 即可获取同一类的所有 li 的 id

javascript - ajax 从远程服务器获取图像