需求:

我司现有大屏需要接入第三方天气接口,考虑到要保证数据的实时,并要确保限制天气api调用次数。 所以讨论决定在进入页面时调用api一次,并在整点调用一次。

因为大屏平均每天开启一次,从上午展示到晚上,所以不会频繁去打开页面


前端实现:

我们可以在Vue的created钩子函数中发送初次请求,并使用JavaScript中的setInterval函数来设置整点定时发送请求。以下是一个示例

<template>
  <div>
    <h1>当前时间:{{ currentTime }}</h1>
    <ul>
      <li v-for="item in items" :key="item.id">{{ item.name }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentTime: new Date().toLocaleString(),
      items: []
    };
  },
  created() {
    // 初次请求
    this.fetchData();

    // 设置整点定时发送请求
    setInterval(() => {
      const now = new Date();
      if (now.getMinutes() === 0 && now.getSeconds() === 0) {
        this.fetchData();
      }
      this.currentTime = now.toLocaleString();
    }, 1000);
  },
  methods: {
    fetchData() {
      // 发送请求的代码
      // 例如使用axios发送请求
      axios.get('/api/items').then(response => {
        this.items = response.data;
      });
    }
  }
};
</script>

在上面的示例中,我们在created钩子函数中发送了初次请求,并使用setInterval函数设置了整点定时发送请求。在每秒钟的回调函数中,我们检查当前时间是否为整点,并在是的情况下调用fetchData方法。同时,我们还使用了Vue的响应式数据来更新页面中的时间和列表。

Logo

前往低代码交流专区

更多推荐