Skip to content

Commit 3b33f4a

Browse files
authored
Merge pull request #11 from Ollisteka/promise-all-settled
Правки структуры и обновление информации
2 parents 8b5f1c0 + d56e5a8 commit 3b33f4a

File tree

2 files changed

+58
-59
lines changed

2 files changed

+58
-59
lines changed

index.html

+57-58
Original file line numberDiff line numberDiff line change
@@ -457,8 +457,10 @@
457457
### Недостатки fetch
458458

459459
- reject только, если происходят ошибки сетевые
460-
- Запрос нельзя отменить
461-
- Нельзя следить за прогрессом, например, загрузки
460+
- нельзя следить за прогрессом загрузки*
461+
462+
463+
\*можно <a href="https://learn.javascript.ru/fetch-progress" target="_blank">за получением данных</a>
462464

463465
***
464466

@@ -567,62 +569,23 @@
567569

568570

569571
</script></section>
570-
<section data-markdown><script type="text/template">
571-
572-
## Работа с сервером из React
573-
574-
***
575-
576-
577-
### Где делать запросы?
578-
579-
- Если компоненту нужны данные для того, чтобы отрисоваться?
580-
- Если компоненту надо после пользовательского события отправить запрос на сервер?
581-
582-
583-
***
584-
585-
586-
### Где делать запросы
587-
588-
- Если компоненту нужны данные для того, чтобы отрисоваться? *В методе жизненного цикла componentDidMount*
589-
- Если компоненту надо после пользовательского события отправить запрос на сервер? *В обработчике события*
590-
591-
592-
***
593-
594-
595-
### Практика
596-
597-
1. Перейди в директорию `tasks/react`
598-
2. Выполни команду `npm i`
599-
3. После установки зависимостей выполни команду `npm start`
600-
4. Открой отдельное окно терминала и выполни команду `npm run server` (из этой же директории)
601-
5. В файле `src/App/index.js` написаны условия задачи, выполни их!
602572

603-
604-
</script></section>
605573
<section data-markdown><script type="text/template">
606574

607-
608575
## Advanced Promises
609576

610577
***
611578

612579
### Promise.race когда выполнится хоть один промис
613580

614581
```js
615-
var promise1 = new Promise(function(resolve, reject) {
616-
setTimeout(resolve, 500, 'one');
617-
});
582+
let promise1 = new Promise((resolve, reject) => setTimeout(resolve, 500, 'one'));
618583
619-
var promise2 = new Promise(function(resolve, reject) {
620-
setTimeout(resolve, 100, 'two');
621-
});
584+
let promise2 = new Promise((resolve, reject) => setTimeout(resolve, 100, 'two'));
585+
586+
Promise.race([promise1, promise2])
587+
.then(value => console.log(value)); // 'two'
622588
623-
Promise.race([promise1, promise2]).then(function(value) {
624-
console.log(value); // 'two'
625-
});
626589
```
627590
[MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/race)
628591

@@ -632,15 +595,12 @@
632595
### Promise.all когда выполнятся все промисы
633596

634597
```js
635-
var promise1 = Promise.resolve(3);
636-
var promise2 = 42;
637-
var promise3 = new Promise(function(resolve, reject) {
638-
setTimeout(resolve, 100, 'foo');
639-
});
598+
let promise1 = Promise.resolve(3);
599+
let promise2 = 42;
600+
let promise3 = new Promise((resolve, reject) => setTimeout(resolve, 100, 'foo'));
640601
641602
Promise.all([promise1, promise2, promise3])
642-
.then(values => console.log(values));
643-
603+
.then(values => console.log(values)); // [3, 42, 'foo']
644604
```
645605

646606
```js
@@ -651,15 +611,19 @@
651611

652612
***
653613

654-
655614
### Promise.allSettled когда все промисы выполнятся или отклонятся
656615

657616
```js
658-
var promise1 = Promise.reject(3);
659-
var promise2 = 42;
617+
let promise1 = Promise.reject(3);
618+
let promise2 = 42;
660619
661620
Promise.allSettled([promise1, promise2])
662-
.then(values => console.log(values));
621+
.then(values => console.log(values));
622+
/* [
623+
{"status": "rejected", "reason": 3},
624+
{"status": "fulfilled", "value": 42}
625+
]
626+
*/
663627
664628
```
665629

@@ -684,7 +648,7 @@
684648

685649
### Задачка
686650

687-
Почти все наши запросы можно делать параллельно. Перепиши функцию `run`, чтобы она использовала Promise.all.
651+
Почти все наши запросы можно делать параллельно. Перепиши функцию `run`, чтобы она использовала `Promise.all`.
688652

689653
<img src="assets/parallel-requests.png" alt="parallel requests in devTools">
690654

@@ -699,6 +663,41 @@
699663

700664
## [Интерактивная статья о микротасках](https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/)
701665

666+
</script></section>
667+
668+
<section data-markdown><script type="text/template">
669+
670+
## Работа с сервером из React
671+
672+
***
673+
674+
675+
### Где делать запросы?
676+
677+
- Если компоненту нужны данные для того, чтобы отрисоваться?
678+
- Если компоненту надо после пользовательского события отправить запрос на сервер?
679+
680+
681+
***
682+
683+
684+
### Где делать запросы
685+
686+
- Если компоненту нужны данные для того, чтобы отрисоваться? *В методе жизненного цикла componentDidMount или в useEffect*
687+
- Если компоненту надо после пользовательского события отправить запрос на сервер? *В обработчике события*
688+
689+
690+
***
691+
692+
693+
### Практика
694+
695+
1. Перейди в директорию `tasks/react`
696+
2. Выполни команду `npm i`
697+
3. После установки зависимостей выполни команду `npm start`
698+
4. Открой отдельное окно терминала и выполни команду `npm run server` (из этой же директории)
699+
5. В файле `src/App/index.js` написаны условия задачи, выполни их!
700+
702701

703702
</script></section>
704703
<section data-markdown><script type="text/template">

tasks/react/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"version": "1.0.0",
44
"scripts": {
55
"server": "node server/server.js",
6-
"start": "webpack serve --mode development",
6+
"start": "set NODE_OPTIONS=--openssl-legacy-provider && webpack serve --mode development",
77
"build": "webpack --mode development"
88
},
99
"dependencies": {

0 commit comments

Comments
 (0)