Size: a a a

2020 December 22

КС

Кирилл Спасибович... in Svelte [svelt]
я обычно начальную загрузку делаю через await, Promise.all на пачку запросов и потом отображаю всё
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Кирилл Спасибович
или это только для геттера ? типа хранишь ты такой список, тут прошло допустим секунд 30, следующий запрос к стору затригерит дёргание свежих данных с сервера ?
геттер дергается только в нескольких случаях:

1) асинкабл стор ленивый и поэтому первый раз геттер трегирится при появлении каждого 1-го подписчика;
2) геттер дергается если изменились зависимые сторы
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
если нужно обновлять данные каждые 30 сек, то это будет так:

const timer = readable(set => {
   const interval = setInterval(() => set(Date.now()), 30000);
   return () => clearInterval(interval);
});

const data = asyncable(($timer) => fetchData(), undefined, [ timer ]);
источник

КС

Кирилл Спасибович... in Svelte [svelt]
получается если у меня роутер отмонтировал компонент, который показывает этот стор, то обновится в следующий раз только тогда, когда его снова примонтируют ?
источник

КС

Кирилл Спасибович... in Svelte [svelt]
т.к. подписчики пропали
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Кирилл Спасибович
получается если у меня роутер отмонтировал компонент, который показывает этот стор, то обновится в следующий раз только тогда, когда его снова примонтируют ?
да
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
если данные никому не нужны, они не запрашиваются
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
и наоборот если вдруг нужны кому-то снова или поменялись зависимости, тогда идет запрос
источник

КС

Кирилл Спасибович... in Svelte [svelt]
а.. понял, т.е. я подписался на data, который дёргается когда timer стреляет, и если подписчиков у data нету, оно ниче не делает
источник

КС

Кирилл Спасибович... in Svelte [svelt]
прикольно
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Кирилл Спасибович
а.. понял, т.е. я подписался на data, который дёргается когда timer стреляет, и если подписчиков у data нету, оно ниче не делает
да
источник

КС

Кирилл Спасибович... in Svelte [svelt]
а timer должен быть стором или не обязательно?
источник

КС

Кирилл Спасибович... in Svelte [svelt]
это код в теле компонента я так понял ?
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Кирилл Спасибович
а timer должен быть стором или не обязательно?
зависимости только сторы. по сути acyancalbe это writable + derived + автоматическа обертка в промис и автоматический резолв промиса в update
источник

КС

Кирилл Спасибович... in Svelte [svelt]
ну да, я поглядел код, там немного
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Кирилл Спасибович
это код в теле компонента я так понял ?
я обычно сторы не держу в компонентах
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Кирилл Спасибович
ну да, я поглядел код, там немного
там очень просто все)
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
можно еще сделать из asyncalbe стора только на чтение, если передать вместо setter явное falsy
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
например null
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
и еще особенность - 2way биндинги не работают конечно же
источник