Программирование с нуля
85 subscribers
58 links
Канал поможеть научиться программировать с нуля, полезные материалы для обучения, интересные статьи. Все материалы бесплатны.
Телеграм для связи: @booltoken
Download Telegram
Асинхронность в JavaScript: Промисы и async/await

В мире веб-разработки асинхронность играет важную роль, и JavaScript предоставляет удобные инструменты для её реализации. Давайте рассмотрим, как работают промисы и конструкция async/await для создания асинхронного кода на примере простого запроса данных.

Промисы

Промисы позволяют работать с асинхронными операциями, избегая "адского коллбеков". Вот пример использования промисов с помощью fetch:

function fetchData(url) {
return fetch(url)
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
console.log('Data fetched:', data);
})
.catch(error => {
console.error('There was a problem with the fetch operation:', error);
});
}

fetchData('https://jsonplaceholder.typicode.com/posts/1');


Async/Await

Конструкция async/await позволяет писать асинхронный код более последовательно и делает его менее загроможденным, чем цепочки .then(). Вот как переписать предыдущий пример с использованием async/await:

async function fetchData(url) {
try {
const response = await fetch(url);
if (!response.ok) {
throw new Error('Network response was not ok');
}
const data = await response.json();
console.log('Data fetched:', data);
} catch (error) {
console.error('There was a problem with the fetch operation:', error);
}
}

fetchData('https://jsonplaceholder.typicode.com/posts/1');


Используя async/await, код становится более читаемым и структурированным, что делает его выбором для большинства современных приложений.

Если тебе интересна тема JavaScript и ты хочешь изучить больше о возможностях асинхронного программирования, не забудь подписаться на наш канал @programmirovanies0!

#JavaScript #AsyncAwait #Promise #WebDevelopment #Программирование
Как случайным образом выбрать язык программирования для изучения? 🤔

Иногда хочется попробовать что-то новое, но не знаешь, с чего начать. Вот простой способ выбрать язык программирования случайным образом с помощью Python:

import random

languages = ["Python", "Golang", "PHP", "JavaScript", "Node.js"]
chosen_language = random.choice(languages)

print(f"Сегодня изучаем: {chosen_language}!")


Этот код выберет один из языков из списка и выведет его на экран. Попробуйте запустить его и посмотреть, что выпадет! 🎲

Почему это полезно?
1. Разнообразие: Вы сможете познакомиться с разными парадигмами и подходами.
2. Гибкость: Знание нескольких языков делает вас более универсальным разработчиком.
3. Интерес: Новые технологии могут вдохновить на создание интересных проектов.

А какой язык вы бы хотели изучить? Делитесь в комментариях! 👇

#Python #Golang #PHP #JavaScript #NodeJS #Программирование #JuniorDev #RandomChoice

👉 Подписывайтесь на канал: @programmirovanies0
Как работать с асинхронными запросами в JavaScript: Promises и async/await 🌐

В современной веб-разработке асинхронные операции, такие как запросы к API, играют ключевую роль. JavaScript предоставляет мощные инструменты для работы с асинхронным кодом: Promises (Обещания) и async/await. Давайте разберемся, как их использовать!

### Что такое Promise?

Promise — это объект, который представляет результат асинхронной операции. У него есть три состояния:
- Pending (Ожидание): операция еще не завершена.
- Fulfilled (Выполнено): операция завершена успешно.
- Rejected (Отклонено): операция завершена с ошибкой.

Пример использования Promise:

const fetchData = new Promise((resolve, reject) => {
setTimeout(() => {
const success = true; // Имитация успешного запроса
if (success) {
resolve("Данные успешно получены!");
} else {
reject("Ошибка при получении данных");
}
}, 2000); // Имитация задержки в 2 секунды
});

fetchData
.then((result) => {
console.log(result); // Успешный результат
})
.catch((error) => {
console.error(error); // Обработка ошибки
});


### Что такое async/await?

async/await — это синтаксический сахар над Promise, который делает асинхронный код более читаемым и похожим на синхронный. Ключевое слово async указывает, что функция возвращает Promise, а await приостанавливает выполнение функции до тех пор, пока Promise не будет выполнен.

Пример использования async/await:

async function fetchData() {
try {
const response = await fetch('https://jsonplaceholder.typicode.com/posts/1');
const data = await response.json();
console.log(data);
} catch (error) {
console.error("Ошибка:", error);
}
}

fetchData();


Здесь fetchData выполняет асинхронный запрос к API и выводит результат. Если происходит ошибка, она обрабатывается в блоке catch.

### Преимущества async/await

1. Читаемость: Код выглядит как синхронный, что упрощает его понимание.
2. Удобство: Легко обрабатывать ошибки с помощью try/catch.
3. Гибкость: Можно комбинировать с Promise и другими асинхронными конструкциями.

### Когда использовать Promises и async/await?

- Promises: Подходят для простых асинхронных операций или когда нужно работать с несколькими асинхронными задачами одновременно (например, Promise.all).
- async/await: Идеально для сложных асинхронных сценариев, где важна читаемость и последовательность выполнения.

### Пример с Promise.all

Если нужно выполнить несколько асинхронных запросов одновременно:

async function fetchMultipleData() {
try {
const [data1, data2] = await Promise.all([
fetch('https://jsonplaceholder.typicode.com/posts/1').then(res => res.json()),
fetch('https://jsonplaceholder.typicode.com/posts/2').then(res => res.json())
]);
console.log(data1, data2);
} catch (error) {
console.error("Ошибка:", error);
}
}

fetchMultipleData();


### Заключение

Асинхронное программирование в JavaScript стало проще и удобнее благодаря Promises и async/await. Используйте их, чтобы писать чистый и эффективный код для работы с API и другими асинхронными операциями! 🚀

#JavaScript #AsyncAwait #Promises #АсинхронноеПрограммирование #WebDevelopment

Подписывайтесь на наш канал: @programmirovanies0
🎯 Работа с массивами и объектами в JavaScript: как избежать ошибок и писать чистый код

Массивы и объекты — это основа JavaScript. Они используются повсеместно, но иногда могут вызывать проблемы, особенно если вы не до конца понимаете, как они работают. Давайте разберем несколько полезных приемов и подводных камней!

### 1. Копирование массивов и объектов
Одна из самых частых ошибок — это неправильное копирование массивов и объектов. Если вы просто присвоите массив или объект новой переменной, это будет ссылка, а не копия.

#### Проблема:
const originalArray = [1, 2, 3];
const copiedArray = originalArray;

copiedArray.push(4);
console.log(originalArray); // [1, 2, 3, 4] 😱


#### Решение:
Используйте spread-оператор или метод slice для массивов и Object.assign или JSON.parse(JSON.stringify(...)) для объектов.

// Для массивов
const copiedArray = [...originalArray];
copiedArray.push(4);
console.log(originalArray); // [1, 2, 3] 👍

// Для объектов
const originalObject = { a: 1, b: 2 };
const copiedObject = { ...originalObject };
copiedObject.c = 3;
console.log(originalObject); // { a: 1, b: 2 } 👍


### 2. Итерация по массивам и объектам
JavaScript предлагает множество способов для итерации. Выбор зависит от задачи.

#### Массивы:
- forEach: для простого перебора.
- map: для создания нового массива на основе существующего.
- filter: для фильтрации элементов.

const numbers = [1, 2, 3, 4];

numbers.forEach(num => console.log(num)); // 1, 2, 3, 4

const doubled = numbers.map(num => num * 2);
console.log(doubled); // [2, 4, 6, 8]

const evens = numbers.filter(num => num % 2 === 0);
console.log(evens); // [2, 4]


#### Объекты:
- for...in: для перебора ключей.
- Object.keys, Object.values, Object.entries: для получения ключей, значений или пар ключ-значение.

const user = { name: "Alice", age: 25 };

for (let key in user) {
console.log(`${key}: ${user[key]}`);
}

const keys = Object.keys(user);
console.log(keys); // ["name", "age"]

const entries = Object.entries(user);
console.log(entries); // [["name", "Alice"], ["age", 25]]


### 3. Глубокая вложенность объектов
Если вы работаете с глубоко вложенными объектами, используйте опциональную цепочку (?.) для безопасного доступа к свойствам.

const user = {
profile: {
address: {
city: "New York"
}
}
};

console.log(user.profile?.address?.city); // "New York"
console.log(user.profile?.contacts?.email); // undefined (без ошибки)


### 4. Удаление дубликатов из массива
Для удаления дубликатов используйте Set.

const numbers = [1, 2, 2, 3, 4, 4, 5];
const uniqueNumbers = [...new Set(numbers)];
console.log(uniqueNumbers); // [1, 2, 3, 4, 5]


### 5. Советы по работе с массивами и объектами
- Используйте деструктуризацию для упрощения работы с объектами и массивами.
- Не забывайте про методы reduce, some, every — они могут быть очень полезны.
- Избегайте мутаций (изменения исходных данных), если это не требуется.

---
💡 Хотите больше полезного контента? Подписывайтесь на наш канал: @programmirovanies0

#JavaScript #Массивы #Объекты #Программирование #JuniorPlus #ЧистыйКод