update promises
This commit is contained in:
46
docs/javascript/08-promises/01-callbacks.md
Normal file
46
docs/javascript/08-promises/01-callbacks.md
Normal file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# Введение: колбэки
|
||||
Источник *Deepseek*
|
||||
|
||||
Асинхронное программирование с использованием callback-функций в JavaScript — это один из традиционных подходов для работы с асинхронными операциями, такими как чтение файлов, запросы к серверу или таймеры. Callback-функция передается в качестве аргумента в асинхронную функцию и вызывается после завершения этой операции.
|
||||
|
||||
Вот пример асинхронного программирования с использованием callback:
|
||||
```js
|
||||
// Пример асинхронной функции, которая имитирует запрос к серверу
|
||||
function fetchData(callback) {
|
||||
// Имитируем задержку с помощью setTimeout
|
||||
setTimeout(() => {
|
||||
const data = { name: "John", age: 30 };
|
||||
// Вызываем callback-функцию и передаем ей данные
|
||||
callback(data);
|
||||
}, 2000); // Задержка 2 секунды
|
||||
}
|
||||
|
||||
// Callback-функция, которая будет вызвана после получения данных
|
||||
function handleData(data) {
|
||||
console.log("Данные получены:", data);
|
||||
}
|
||||
|
||||
// Вызов асинхронной функции с передачей callback
|
||||
fetchData(handleData);
|
||||
|
||||
console.log("Ожидание данных...");
|
||||
```
|
||||
|
||||
Объяснение:
|
||||
1. **fetchData** — это асинхронная функция, которая имитирует запрос к серверу с задержкой в 2 секунды.
|
||||
2. **callback** — это функция, которая передается в `fetchData` и будет вызвана после завершения асинхронной операции.
|
||||
3. **handleData** — это callback-функция, которая обрабатывает полученные данные.
|
||||
4. **setTimeout** используется для имитации задержки, как будто данные загружаются с сервера.
|
||||
|
||||
Вывод в консоль:
|
||||
```
|
||||
Ожидание данных...
|
||||
Данные получены: { name: "John", age: 30 }
|
||||
```
|
||||
Особенности:
|
||||
- Callback-функции могут привести к так называемому "callback hell" (ад колбэков), когда много асинхронных операций вложены друг в друга, что делает код сложным для чтения и поддержки.
|
||||
- В современных JavaScript-проектах вместо callback-функций часто используют Promises или async/await для более удобной работы с асинхронным кодом.
|
||||
Reference in New Issue
Block a user