首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sapper/Svelte -如何定期获取

Sapper/Svelte -如何定期获取
EN

Stack Overflow用户
提问于 2020-05-18 15:26:16
回答 2查看 1.5K关注 0票数 0

如何使用Sapper定期获取数据?

这样做对吗?

代码语言:javascript
复制
//src/routes/fetch_on_this_page.svelte

<script>
  setInterval(async () => {
    //fetch here
  }, 3000);
</script>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-21 15:23:58

要做到这一点,最简单的方法就是在onMount中完成所有的工作。

代码语言:javascript
复制
<script>
  import { onMount } from 'svelte';

  onMount(() => {
    async function fetchData() {...}

    const interval = setInterval(fetchData, 3000);
    fetchData();

    return () => clearInterval(interval));
  });
</script>

除了创建较少的组件级变量外,onMount代码在服务器端呈现过程中不运行,因此工作量较少。如果需要在多个组件中执行此操作,还可以将其封装到自定义生命周期函数中:

代码语言:javascript
复制
// poll.js
import { onMount } from 'svelte';

export function poll(fn, ms) {
  onMount(() => {
    const interval = setInterval(fn, ms);
    fn();

    return () => clearInterval(interval));
  });
}
代码语言:javascript
复制
<script>
  import { poll } from './poll.js';

  poll(async function fetchData() {
    // implementation goes here
  }, 3000);
</script>
票数 4
EN

Stack Overflow用户

发布于 2020-05-18 15:58:26

代码语言:javascript
复制
<script>
  import { onMount, onDestroy } from "svelte";

  async function fetchData() {
  //Fetch
  }

  const interval = setInterval(async () => {
    fetchData();
  }, 3000);

  onMount(async () => {
    fetchData();
  });

  onDestroy(() => clearInterval(interval));
</script>

https://svelte.dev/tutorial/ondestroy

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61873119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档