update js
This commit is contained in:
@@ -3,7 +3,6 @@ sidebar_position: 1
|
||||
---
|
||||
|
||||
# Введение: колбэки
|
||||
Источник *Deepseek*
|
||||
|
||||
Асинхронное программирование с использованием callback-функций в JavaScript — это один из традиционных подходов для работы с асинхронными операциями, такими как чтение файлов, запросы к серверу или таймеры. Callback-функция передается в качестве аргумента в асинхронную функцию и вызывается после завершения этой операции.
|
||||
|
||||
@@ -43,4 +42,6 @@ console.log("Ожидание данных...");
|
||||
```
|
||||
Особенности:
|
||||
- Callback-функции могут привести к так называемому "callback hell" (ад колбэков), когда много асинхронных операций вложены друг в друга, что делает код сложным для чтения и поддержки.
|
||||
- В современных JavaScript-проектах вместо callback-функций часто используют Promises или async/await для более удобной работы с асинхронным кодом.
|
||||
- В современных JavaScript-проектах вместо callback-функций часто используют Promises или async/await для более удобной работы с асинхронным кодом.
|
||||
|
||||
🚀 **Источник Deepseek**
|
||||
@@ -3,8 +3,6 @@ sidebar_position: 2
|
||||
---
|
||||
|
||||
# Promises
|
||||
Источник *Deepseek*
|
||||
|
||||
Использование Promises (обещаний) в JavaScript — это более современный и удобный способ работы с асинхронными операциями по сравнению с callback-функциями. Promises позволяют избежать "callback hell" и делают код более читаемым и структурированным.
|
||||
|
||||
Вот пример асинхронного программирования с использованием Promises:
|
||||
@@ -83,3 +81,5 @@ fetchData()
|
||||
|
||||
💥 **Thenable**
|
||||
> Если быть более точными, обработчик может возвращать не именно промис, а любой объект, содержащий метод .then, такие объекты называют «thenable», и этот объект будет обработан как промис.
|
||||
|
||||
🚀 **Источник Deepseek**
|
||||
@@ -3,8 +3,6 @@ sidebar_position: 3
|
||||
---
|
||||
|
||||
# Обработка ошибок
|
||||
Источник: [https://learn.javascript.ru/promise-error-handling](https://learn.javascript.ru/promise-error-handling)
|
||||
|
||||
- `.catch` перехватывает все виды ошибок в промисах: будь то вызов `reject()` или ошибка, брошенная в обработчике при помощи `throw`.
|
||||
- `.then` также перехватывает ошибки таким же образом, если задан второй аргумент (который является обработчиком ошибок).
|
||||
- Необходимо размещать `.catch` там, где мы хотим обработать ошибки и знаем, как это сделать. Обработчик может проанализировать ошибку (могут быть полезны пользовательские классы ошибок) и пробросить её, если ничего не знает о ней (возможно, это программная ошибка).
|
||||
@@ -50,3 +48,4 @@ new Promise(function() {
|
||||
|
||||
Обычно такие ошибки неустранимы, поэтому лучше всего – информировать пользователя о проблеме и, возможно, отправить информацию об ошибке на сервер.
|
||||
|
||||
🚀 **Источник: [https://learn.javascript.ru/promise-error-handling](https://learn.javascript.ru/promise-error-handling)**
|
||||
@@ -3,7 +3,6 @@ sidebar_position: 4
|
||||
---
|
||||
|
||||
# Promise API
|
||||
Источник:
|
||||
В классе Promise есть 6 статических методов.
|
||||
|
||||
- **Promise.all(promises)** – ожидает выполнения всех промисов и возвращает массив с результатами. Если любой из указанных промисов вернёт ошибку, то результатом работы Promise.all будет эта ошибка, результаты остальных промисов будут игнорироваться.
|
||||
@@ -15,4 +14,6 @@ sidebar_position: 4
|
||||
- **Promise.resolve(value)** – возвращает успешно выполнившийся промис с результатом value.
|
||||
- **Promise.reject(error)** – возвращает промис с ошибкой error.
|
||||
|
||||
Из всех перечисленных методов, самый часто используемый – **Promise.all**.
|
||||
Из всех перечисленных методов, самый часто используемый – **Promise.all**.
|
||||
|
||||
🚀 **Источник Deepseek**
|
||||
@@ -3,8 +3,6 @@ sidebar_position: 5
|
||||
---
|
||||
|
||||
# Промисификация
|
||||
Источник: [https://learn.javascript.ru/promisify](https://learn.javascript.ru/promisify)
|
||||
|
||||
Промисификация – это длинное слово для простого преобразования. Мы берём функцию, которая принимает колбэк и меняем её, чтобы она вместо этого возвращала промис.
|
||||
|
||||
Такие преобразования часто необходимы в реальной жизни, так как многие функции и библиотеки основаны на колбэках, а использование промисов более удобно, поэтому есть смысл «промисифицировать» их.
|
||||
@@ -38,4 +36,6 @@ function promisify(f, manyArgs = false) {
|
||||
// использование:
|
||||
f = promisify(f, true);
|
||||
f(...).then(arrayOfResults => ..., err => ...)
|
||||
```
|
||||
```
|
||||
|
||||
🚀 **Источник: [https://learn.javascript.ru/promisify](https://learn.javascript.ru/promisify)**
|
||||
@@ -16,4 +16,6 @@ sidebar_position: 6
|
||||
|
||||
Вместе они предоставляют отличный каркас для написания асинхронного кода. Такой код легко и писать, и читать.
|
||||
|
||||
Хотя при работе с `async/await` можно обходиться без `promise.then/catch`, иногда всё-таки приходится использовать эти методы (на верхнем уровне вложенности, например). Также `await` отлично работает в сочетании с `Promise.all`, если необходимо выполнить несколько задач параллельно.
|
||||
Хотя при работе с `async/await` можно обходиться без `promise.then/catch`, иногда всё-таки приходится использовать эти методы (на верхнем уровне вложенности, например). Также `await` отлично работает в сочетании с `Promise.all`, если необходимо выполнить несколько задач параллельно.
|
||||
|
||||
🚀 **Источник: [https://learn.javascript.ru/async-await](https://learn.javascript.ru/async-await)**
|
||||
@@ -3,9 +3,6 @@ sidebar_position: 7
|
||||
---
|
||||
|
||||
# Event loop
|
||||
Источник: DeepSeek \
|
||||
Видеоразбор: [JavaScript - Event Loop | Асинхронность, Web API, Очереди (макро/микро)задач, Отрисовка кадров](https://www.youtube.com/watch?v=YTLXrji4DJc)
|
||||
|
||||
Event Loop (цикл событий) — это механизм, который позволяет JavaScript выполнять асинхронные операции, несмотря на то, что сам язык является однопоточным. Он отвечает за обработку событий, вызовов колбэков и выполнение задач в правильном порядке.
|
||||
|
||||
## Основные компоненты Event Loop
|
||||
@@ -65,4 +62,7 @@ Timeout
|
||||
3. Промис сразу резолвится, и его колбэк попадает в Microtask Queue.
|
||||
4. После завершения синхронного кода Event Loop сначала выполняет микрозадачи (колбэк промиса), а затем переходит к Callback Queue (колбэк `setTimeout`).
|
||||
|
||||
Event Loop позволяет JavaScript эффективно обрабатывать асинхронные операции, несмотря на однопоточность. Он управляет порядком выполнения задач, используя Call Stack, Web APIs, Callback Queue и Microtask Queue. Понимание этого механизма важно для написания эффективного и предсказуемого асинхронного кода.
|
||||
Event Loop позволяет JavaScript эффективно обрабатывать асинхронные операции, несмотря на однопоточность. Он управляет порядком выполнения задач, используя Call Stack, Web APIs, Callback Queue и Microtask Queue. Понимание этого механизма важно для написания эффективного и предсказуемого асинхронного кода.
|
||||
|
||||
🚀 **Источник: DeepSeek** \
|
||||
🚀 Видеоразбор: [JavaScript - Event Loop | Асинхронность, Web API, Очереди (макро/микро)задач, Отрисовка кадров](https://www.youtube.com/watch?v=YTLXrji4DJc)
|
||||
|
||||
Reference in New Issue
Block a user