---
# System prepended metadata

title: task

---

# task

- here will be task
- MobX
- create react app
- typescript


# TASK

## Часть 1

У нас есть 3 url, возвращающие `number[]`

Выраженные примерно такими функциями:
```
async getA(): Promise<number[]> {
   return new Promise((resolve) => {
      setTimeout(() => {
          resolve([
             1, 1, 1, 1
          ]);
      });
   });
}
```

```
async getB(): Promise<number[]> {
   return new Promise((resolve) => {
      setTimeout(() => {
          resolve([
             2, 2, 2, 2
          ]);
      });
   });
}
```

```
async getC(): Promise<number[]> {
   return new Promise((resolve) => {
      setTimeout(() => {
          resolve([
             3, 3, 3, 3
          ]);
      });
   });
}
```

Массивы одинаковой длинны (для упрощения задачи)

Нужно написать объект состояния на mobx, с массивами `a`, `b`, `c`, `d`,
где `a`, `b`, `c` - данные полученные с функций приведённых выше (это как бы http запросы), а `d` это массив вычисляемый как `d[i] = a[i] * b[i]`

Состояние из mobx нужно render'ить в `App.tsx`, простым сопособом, как числа разделённые запятой:

```
a: 1, 1, 1, 1
b: 2, 2, 2, 2
c: 3, 3, 3, 3
d: 2, 2, 2, 2
```

## Часть 2

Добавить кнопку в UI, по нажатии на которую будет произведён запрос `getA`.

Мы предполагаем что состояние на сервере изменилось и в ответ сервер отдаст другой ответ, скажем `[5,5,5,5]`

И соответственно состояние в mobx должно обновится корректно. И в UI должны отобразится данные, по прежнему соответствующие приведённым выше правилам:

> `a`, `b`, `c` - данные полученные с функций приведённых выше (это как бы http запросы), а `d` это массив вычисляемый как `d[i] = a[i] * b[i]`


PS: Если есть вопросы - пишите