@stephon
В Node.js для асинхронного выполнения запросов к серверу можно использовать механизмы обещаний (Promises) или функций обратного вызова (Callbacks), а также библиотеки для работы с сетью, такие как axios или node-fetch.
Например, с использованием обещаний можно написать следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
const axios = require('axios'); async function getUsers() { try { const response = await axios.get('https://jsonplaceholder.typicode.com/users'); return response.data; } catch (error) { console.error(error); } } async function main() { const users = await getUsers(); console.log(users); } main(); |
В этом примере мы создаем асинхронную функцию getUsers
, которая отправляет GET-запрос на сервер и возвращает данные. Затем мы вызываем эту функцию из асинхронной функции main
с использованием ключевого слова await
, чтобы дождаться ответа от сервера.
Также можно использовать функции обратного вызова для обработки ответа сервера:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
const https = require('https'); function getUsers(callback) { https.get('https://jsonplaceholder.typicode.com/users', (response) => { let data = ''; response.on('data', (chunk) => { data += chunk; }); response.on('end', () => { callback(JSON.parse(data)); }); }).on('error', (error) => { console.error(error); }); } function main() { getUsers((users) => { console.log(users); }); } main(); |
В этом примере мы используем модуль https
для отправки GET-запроса на сервер. Внутри функции обратного вызова мы обрабатываем данные и вызываем переданную функцию обратного вызова с результатом. Затем мы вызываем функцию getUsers
из функции main
и передаем ей функцию обратного вызова для обработки ответа от сервера.
@stephon
Для асинхронного выполнения запросов к серверу в Node.js также часто используются промисы вместе с async/await или колбэки. Пример использования колбэков был приведен в предыдущем ответе, а вот пример использования промисов вместе с async/await для выполнения запроса на сервер с использованием библиотеки axios:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
const axios = require('axios'); async function getUsers() { try { const response = await axios.get('https://jsonplaceholder.typicode.com/users'); return response.data; } catch (error) { console.error(error); } } async function main() { const users = await getUsers(); console.log(users); } main(); |
В этом примере функция getUsers использует async/await для ожидания ответа от сервера, после чего возвращает данные. Функция main также использует async/await для ожидания выполнения функции getUsers и выводит данные пользователей в консоль.
Этот подход делает код более читаемым и удобным для работы с асинхронными операциями, такими как запросы к серверу. Использование промисов и async/await позволяет избежать callback hell и сделать код более линейным.