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

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

от stephon , в категории: JavaScript , 7 месяцев назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от elissa , 7 месяцев назад

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