/* * Backend'den veri talebini taklit eden fonksiyon. * Backend'in RPS sınırı vardır ve başarısız olur, * eğer paralel istek sayısı MAX_PARALLEL_REQUESTS'den fazla ise. */ function requestData(id: number): Promise<string> { parallelRequests++; if (parallelRequests > MAX_PARALLEL_REQUESTS) { throw new Error("Çox sayda paralel sorğu"); } return new Promise((res) => { setTimeout(() => { parallelRequests--; return res(`${id * 2}`); }, Math.floor(Math.random() * 2000)) }); } function prepareData( ids: number[], maxParallelRequests: number, ): Promise<string[]> { /* * TODO: bütün məlumatların sorğusunu həyata keçirin, * maxParallelRequests sayında paralel bağlantı istifadə edərək. */ }
Frontend
React üçün xüsusi useSubState hook-u həyata keçirin, bu, tam vəziyyəti, setState funksiyasını və açar adını (obyekt sahəsini) qəbul edir və bu sahənin dəyəri və dəyişdirmək üçün funksiyadan ibarət tuple qaytarır — useState-ə bənzəyir, amma böyük vəziyyət obyektinin müəyyən bir sahəsi üçün.
function cloneDeep(something: Cloneable): Cloneable { /* * TODO: JSON.parse/stringify olmadan dərin klonlama tətbiq edin */ return JSON.parse(JSON.stringify(something)); } function assertDeep(a: Cloneable, b: Cloneable) { if (JSON.stringify(a) !== JSON.stringify(b)) { console.error("Yaxşı deyil"); } console.log("Yaxşıdır"); } const obj: Cloneable = { a: 1, b: true, c: "salam", d: { there: "are", some: ["properties"] }, e: {}, f: [(), (), { key: { value: [1, 2, "3", "four"] } }], g: [] }; assertDeep(obj, cloneDeep(obj));