【发布时间】:2021-06-26 10:46:31
【问题描述】:
我正在尝试throttle 在 Svelte 中执行一个函数。但是,在自动订阅中使用节流阀似乎会破坏它。考虑以下示例 (REPL):
<script>
import throttle from 'lodash.throttle';
import { writable } from 'svelte/store';
const arr = writable(['A', 'B', 'C']);
function foo(val) {
console.log('foo: ', val);
}
</script>
{#each $arr as a}
<button on:click={throttle(() => { foo(a); }, 1000)}>
Button {a}
</button>
{/each}
foo(a) 的执行根本没有受到限制。如果您删除 {#each $arr as a} 块并将字符串传递给 foo,您会看到它按预期工作。
我假设这与事件循环以及 Svelte 自动订阅的工作方式有关,但不知道确切原因。想知道是否有人知道 a) 为什么会发生这种情况以及 b) 可能的解决方案是什么样的?
【问题讨论】:
-
lihautan 有一个很好的例子:使用高阶存储来限制存储:youtube.com/watch?v=p1aPfVyZ1IY
标签: lodash svelte throttling svelte-store