```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"...]);
```