Skip to content

Commit 80d0d66

Browse files
Merge pull request #293 from xcurveballx/5-network/01-fetch
Задание из главы Fetch
2 parents 39a2426 + 078dd32 commit 80d0d66

4 files changed

Lines changed: 20 additions & 20 deletions

File tree

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11

22
async function getUsers(names) {
3-
/* your code */
3+
/* ваш код */
44
}

5-network/01-fetch/01-fetch-users/solution.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11

2-
To fetch a user we need:
2+
Чтобы получить сведения о пользователе, нам нужно:
33

44
1. `fetch('https://api.github.com/users/USERNAME')`.
5-
2. If the response has status `200`, call `.json()` to read the JS object.
5+
2. Если в ответ приходит статус `200`, вызываем метод `.json()`, чтобы прочитать JS-объект.
66

7-
If a `fetch` fails, or the response has non-200 status, we just return `null` in the resulting arrray.
7+
Если запрос завершается ошибкой или код статуса в ответе отличен от 200, то мы просто возвращаем `null` в массиве результатов.
88

9-
So here's the code:
9+
Вот код:
1010

1111
```js demo
1212
async function getUsers(names) {
@@ -34,8 +34,8 @@ async function getUsers(names) {
3434
}
3535
```
3636

37-
Please note: `.then` call is attached directly to `fetch`, so that when we have the response, it doesn't wait for other fetches, but starts to read `.json()` immediately.
37+
Пожалуйста, обратите внимание: вызов `.then` идёт сразу после `fetch`, то есть когда ответ получен, сразу начинаем считывание данных с помощью `.json()`, не дожидаясь завершения других запросов.
3838

39-
If we used `await Promise.all(names.map(name => fetch(...)))`, and call `.json()` on the results, then it would wait for all fetches to respond. By adding `.json()` directly to each `fetch`, we ensure that individual fetches start reading data as JSON without waiting for each other.
39+
Если бы мы использовали `await Promise.all(names.map(name => fetch(...)))` и вызывали бы `.json()` на результатах запросов, то пришлось бы ждать, пока завершатся все из них. Вызывая `.json()` сразу после каждого `fetch`, мы добились того, что считывание присланных по каждому запросу данных происходит независимо от других запросов.
4040

41-
That's an example of how low-level `Promise` API can still be useful even if we mainly use `async/await`.
41+
Это пример того, как относительно низкоуровневое `Promise` API может быть полезным, даже если мы в основном используем `async/await` в коде.
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
# Fetch users from GitHub
1+
# Получите данные о пользователях GitHub
22

3-
Create an async function `getUsers(names)`, that gets an array of GitHub user names, fetches them from GitHub and returns an array of GitHub users instead.
3+
Создайте асинхронную функцию `getUsers(names)`, которая получает на вход массив логинов пользователей GitHub, запрашивает у GitHub информацию о них и возвращает массив объектов-пользователей.
44

5-
The GitHub url with user informaiton is: `https://api.github.com/users/USERNAME`.
5+
Информация о пользователе GitHub с логином USERNAME доступна по ссылке: `https://api.github.com/users/USERNAME`.
66

7-
There's a test example in the sandbox.
7+
В песочнице есть тестовый пример.
88

9-
Important details:
9+
Важные детали:
1010

11-
1. There should be one `fetch` request per user. And requests shouldn't wait for each other. So that the data arrives as soon as possible.
12-
2. If a request fails, or if there's no such user, the function should return `null` in the resulting array.
11+
1. На каждого пользователя должен приходиться один запрос `fetch`. Запросы не должны ожидать завершения друг друга. Надо, чтобы данные приходили как можно быстрее.
12+
2. Если какой-то запрос завершается ошибкой или оказалось, что данных о запрашиваемом пользователе нет, то функция должна возвращать `null` в массиве результатов.

5-network/01-fetch/article.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commi
8383
.then(commits => alert(commits[0].author.login));
8484
```
8585

86-
Для получения текста, используем `await response.text()` вместо `.json()`:
86+
Для получения текста используем `await response.text()` вместо `.json()`:
8787

8888
```js run async
8989
let response = await fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits');
@@ -144,7 +144,7 @@ for (let [key, value] of response.headers) {
144144
}
145145
```
146146

147-
Для установки заголовка, мы можем использовать опцию `headers`, например:
147+
Для установки заголовка мы можем использовать опцию `headers`, например:
148148

149149
```js
150150
let response = fetch(protectedUrl, {
@@ -181,7 +181,7 @@ let response = fetch(protectedUrl, {
181181

182182
## POST-запросы
183183

184-
Для отправки `POST` запроса или запроса с другим методом, нам необходимо использовать `fetch` параметры:
184+
Для отправки `POST`-запроса или запроса с другим методом, нам необходимо использовать `fetch` параметры:
185185

186186
- **`method`** -- HTTP метод, например `POST`,
187187
- **`body`** -- один из:
@@ -218,7 +218,7 @@ alert(result.message);
218218

219219
Мы можем отправить бинарные данные напрямую, используя `Blob` или `BufferSource`.
220220

221-
Например, у нас есть элемент `<canvas>`, на котором мы можем рисовать движением мыши. При нажатии на кнопку "Отправить", изображение отправляется на сервер:
221+
Например, у нас есть элемент `<canvas>`, на котором мы можем рисовать движением мыши. При нажатии на кнопку "Отправить" изображение отправляется на сервер:
222222

223223
```html run autorun height="90"
224224
<body style="margin:0">
@@ -285,7 +285,7 @@ fetch(url, options)
285285
- `response.ok` -- `true`, если статус ответа в диапазоне 200-299.
286286
- `response.headers` -- похожий на `Map` объект с HTTP-заголовками.
287287

288-
Методы для получения тела ответа:
288+
Методы для получения тела ответа:
289289
- **`response.json()`** -- преобразовывает ответ в JSON-объект,
290290
- **`response.text()`** -- возвращает ответ как обычный текст,
291291
- **`response.formData()`** -- возвращает ответ как объект FormData (кодировка form/multipart, см. следующую главу),

0 commit comments

Comments
 (0)