Как сделать асинхронное выполнение запросов к серверу в node.js?

Пользователь

от stephon , в категории: JavaScript , 2 года назад

Как сделать асинхронное выполнение запросов к серверу в node.js?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от elissa , 2 года назад

@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 и передаем ей функцию обратного вызова для обработки ответа от сервера.

Пользователь

от buster , 8 месяцев назад

@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 и сделать код более линейным.