Jak działa zamknięcie w JavaScript? Wyjaśnij na przykładzie zmiennej index i funkcji run w twoim rozwiązaniu.
Frontend
Wyjaśnij, jak Promise.all oczekuje na wykonanie wszystkich zapytań w Twoim rozwiązaniu z rekurencją. Dlaczego obecna implementacja może zwrócić niepełny wynik?
Opowiedz więcej o projekcie w Цифриум: za które moduły odpowiadali, jak była zorganizowana funkcja — gdzie znajdowały się endpointy, modele, logika biznesowa, subskrypcje?
Czy używałeś FSD (Feature-Sliced Design) w projekcie? Jak pisałeś próbki i subskrypcje zdarzeń w Effector podczas korzystania z FSD?
Jak rozumiesz wybór architektury? Jak wyróżniasz zalety i wady różnych podejść?
/** * Implementuj funkcję, która wykona callback z danymi * i zwróci tablicę odpowiedzi Response[]. * Rozwiązanie powinno wykonywać wszystkie żądania równolegle * ale nie więcej niż [limit] żądań może być wykonywanych jednocześnie. * Celem jest minimalizacja całkowitego czasu wykonania. */ type Props<RequestData, Response> = { callback: (args: RequestData) => Promise<Response>; data: Array<RequestData>; limit: number; }; export async function runWithLimit<RequestData, Response>({ callback, data, limit, }: Props<RequestData, Response>): Promise<Response[]> { // POCZĄTEK ROZWIĄZANIA TUTAJ if (limit < 1 || data.length === 0) { return Promise.resolve([]); } if (limit >= data.length) { return Promise.all(data.map(callback)); } const result: Response[] = new Array(data.length); let index = 0; const run = async () => { if (index >= data.length) return; const elem = data[index]; try { result[index] = await callback(elem); } catch (err) { result[index] = (err) as Response; // obsługa błędu } index++; run(); }; const startPack = Array.from({ length: limit }, run); await Promise.all(startPack); return result; }
Jak działa Array.from? Co przyjmuje jako argumenty?
Optymalizacja kompilacji: na czym polegała? Jakie inne podejścia znasz do optymalizacji rozmiaru pakietu?
Czym jest dzielenie kodu i jak działa?
Opowiedz o sobie i swoim doświadczeniu zawodowym