Come funziona una closure in JavaScript? Spiegalo con un esempio della variabile index e della funzione run nella tua soluzione.
Frontend
Spiega come Promise.all attende il completamento di tutte le richieste nella tua soluzione ricorsiva. Perché l'implementazione attuale potrebbe restituire un risultato incompleto?
Raccontami di più sul progetto in Цифриум: a quali moduli erano responsabili, come era strutturata la funzionalità — dove si trovavano gli endpoint, modelli, logica di business, sottoscrizioni?
Hai usato FSD (Feature-Sliced Design) in un progetto? Come hai scritto campioni e sottoscrizioni agli eventi in Effector usando FSD?
Come comprendi la scelta dell'architettura? Come evidenzi i pro e i contro tra diversi approcci?
/** * Implementa la funzione che eseguirà un callback con i dati * e restituirà un array di risposte Response[]. * La soluzione dovrebbe eseguire tutte le richieste in parallelo * ma non più di [limit] richieste possono essere eseguite contemporaneamente. * L'obiettivo è minimizzare il tempo totale di esecuzione. */ 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[]> { // INIZIO SOLUZIONE QUI 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; // gestione errore da fare } index++; run(); }; const startPack = Array.from({ length: limit }, run); await Promise.all(startPack); return result; }
Come funziona Array.from? Cosa accetta come argomenti?
Ottimizzazione della compilazione: in cosa consisteva? Quali altri approcci conosce per ottimizzare la dimensione del bundle?
Cos'è il code splitting e come funziona?
Parlami di te e della tua esperienza lavorativa