Size: a a a

2020 December 25

КС

Кирилл Спасибович... in Svelte [svelt]
export function loadResources(resources) {
 return Promise.all(
   resources.map(r => fetchRest(r.endpoint))
 ).then(res => {
   resources.forEach((r, i) => r.store.set(r.pre ? r.pre(res[i]) : res[i]));
 });
}

import { loadAll as funkyOtherStuff } from '@/anotherModule/store.js';

export const something = writable([]);
export const rhymesboi = writable([]);

export const loadAll = Promise.all([
 loadResources([
   {
     endpoint: '/api/something/',
     store: something
   },
   {
     endpoint: 'rhymesboi.il',
     store: rhymesboi,
     pre: v => parseMd(v)
   }
 ]),
 funkyOtherStuff
]);

а вот мой велосипед)
источник

КС

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

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Кирилл Спасибович
export function loadResources(resources) {
 return Promise.all(
   resources.map(r => fetchRest(r.endpoint))
 ).then(res => {
   resources.forEach((r, i) => r.store.set(r.pre ? r.pre(res[i]) : res[i]));
 });
}

import { loadAll as funkyOtherStuff } from '@/anotherModule/store.js';

export const something = writable([]);
export const rhymesboi = writable([]);

export const loadAll = Promise.all([
 loadResources([
   {
     endpoint: '/api/something/',
     store: something
   },
   {
     endpoint: 'rhymesboi.il',
     store: rhymesboi,
     pre: v => parseMd(v)
   }
 ]),
 funkyOtherStuff
]);

а вот мой велосипед)
лучше allSettled вместо all
источник

PM

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

КС

Кирилл Спасибович... in Svelte [svelt]
Pavel 🦇 Malyshev
хз, тогда не совсем понятно почему не стор
не знаю, шобы прямо SFC так SFC
источник

ER

Eric Rovell in Svelte [svelt]
Кирилл Спасибович
export function loadResources(resources) {
 return Promise.all(
   resources.map(r => fetchRest(r.endpoint))
 ).then(res => {
   resources.forEach((r, i) => r.store.set(r.pre ? r.pre(res[i]) : res[i]));
 });
}

import { loadAll as funkyOtherStuff } from '@/anotherModule/store.js';

export const something = writable([]);
export const rhymesboi = writable([]);

export const loadAll = Promise.all([
 loadResources([
   {
     endpoint: '/api/something/',
     store: something
   },
   {
     endpoint: 'rhymesboi.il',
     store: rhymesboi,
     pre: v => parseMd(v)
   }
 ]),
 funkyOtherStuff
]);

а вот мой велосипед)
Вот мой. Оказывается, перепутал. Использовал allSettled

export default async function fetchAll(uriList: string[], fetch: fetch): Promise<any> {
 async function getData(uri: string) {
   const response = await fetch(uri);
   return await response.json();
 }
 
 const responses = await Promise.allSettled(
   uriList.map(uri => getData(uri))
 );
 
 return responses.map(response => {
   return (response.status === "fulfilled")
     ? response.value
     : [];
 });
}
источник

PM

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

ER

Eric Rovell in Svelte [svelt]
Eric Rovell
Вот мой. Оказывается, перепутал. Использовал allSettled

export default async function fetchAll(uriList: string[], fetch: fetch): Promise<any> {
 async function getData(uri: string) {
   const response = await fetch(uri);
   return await response.json();
 }
 
 const responses = await Promise.allSettled(
   uriList.map(uri => getData(uri))
 );
 
 return responses.map(response => {
   return (response.status === "fulfilled")
     ? response.value
     : [];
 });
}
fetch Это this.fetch сапперовский
источник

КС

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

КС

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

ER

Eric Rovell in Svelte [svelt]
источник

ER

Eric Rovell in Svelte [svelt]
Но ведь катится работает, черт возьми😂
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
источник

ER

Eric Rovell in Svelte [svelt]
Там в svelte kit пропал this.fetch, придется новый велосипед тащить
источник

КС

Кирилл Спасибович... in Svelte [svelt]
так че получается, тот подход с loadAll в принципе рекомендуемый?
источник

КС

Кирилл Спасибович... in Svelte [svelt]
Eric Rovell
Вот мой. Оказывается, перепутал. Использовал allSettled

export default async function fetchAll(uriList: string[], fetch: fetch): Promise<any> {
 async function getData(uri: string) {
   const response = await fetch(uri);
   return await response.json();
 }
 
 const responses = await Promise.allSettled(
   uriList.map(uri => getData(uri))
 );
 
 return responses.map(response => {
   return (response.status === "fulfilled")
     ? response.value
     : [];
 });
}
а у тебя ещё и молча пустые массивы оставляет, а не громко выкладывает кирпичей с ошибкой :)
источник

ER

Eric Rovell in Svelte [svelt]
Кирилл Спасибович
а у тебя ещё и молча пустые массивы оставляет, а не громко выкладывает кирпичей с ошибкой :)
Да, сразу избежал казусов😅
источник

КС

Кирилл Спасибович... in Svelte [svelt]
а эта, у тебя ж фетч на какой-нибудь 500 ответ тоже будет сетлед
источник

КС

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

ER

Eric Rovell in Svelte [svelt]
Кирилл Спасибович
а.. это саперовский фетч
Да, всё верно
источник