---
# System prepended metadata

title: Untitled

---

```typescript=


//Написать реализацию функции get которая будет возвращать результат как в примерах

function get(path, obj, defaultValue) {
        let key = path.split('.')[0]; 
        const tempObj = obj[key];
     return get([].join("."),tempObj)
        //let newArr = {};
//         arr.forEach((i)=>{
//             if(obj[i] !== undefined){
//                 return newArr.push(obj[i])
//             }else if(defaultValue){
//                 return newArr.push(defaultValue)
//             }
//         })
    
    //['store', 'user', 'id']
    //['id', 'user'], 'store'].pop() = store
    /*
     * store -> tempObj
     * user -> tempObj=undefined;
     * id -> 1
     */
        
    return newArr[0]
}
    
    
const obj = { 
            store: {
                field:1,
                user: { 
                    id: 1
                }
            }
};

//Примеры

get("store.user.id", obj) // выведет 1

get("store.user1.id", obj, 10) // выведет 10, дефолтное значение


//---------------------------------------------------------------------------------------------------------------


// Написать функцию delay

function delay(ms:number) {
 
}


async function doIt(){

    await delay(1000);
    
    
    notify.success("All good!");   
}


//---------------------------------------------------------------------------------------------------------------


// Написать хук
// Проблема есть функция getNotifications, которая возвращает список нотификаций, 
// тебе нужно сделать хук, который позволит получать нотификации


async function getNotifications():Promise<Notification[]> {
    const {data} = await axios.get("/api/notifications");
    return data;
}




function useNotifications() {
 
}

//используется так

const { items, loading, error } = useNotifications();

//items - массив нотификаций
//loading - флаг что идет загрузка

//1) Можно ли добавить сюда функцию refresh? для запуска обновления?
//2) Как можно было бы организовать кеширование данных?


//---------------------------------------------------------------------------------------------------------------



// Какие проблемы видишь?


const Component = () => {
   const [state, setState] = useState();
   const [count, setCount] = useState();
   
    
    const handleSearch = async (e) => {
        const data = await api.search(e.target.value);
        const count = await api.getCount(e.target.value);
        setState(data);
        setCount(count);
    }
    
    
    return (
         <>
            <input type="text" onChange={handleSearch} />
                
            //Render search result
            {state}
            {count}
         </>
       )
    }
}


//---------------------------------------------------------------------------------------------------------------


Задача


Иванов                00:11:22
Петров                01:22:22

.....

Сидоров               02:32:34




// в 2 потока 
// не должен делать больше 2 активных соед. 
// обработка за миним время
// ilshat.gaifullin@etnatrader.com

function proccessUrl(arr:string[]){
    
    
}


 const result = await proccessUrl(["/api/1", "/api/2"...]);



```