Асинхронное ожидание в Node.js

#node.js #async-await

#node.js #Асинхронное ожидание

Вопрос:

Как использовать асинхронное ожидание в Node.js используя эти функции и как функция request.get() возвращает обещание, по которому пользователь будет ожидать…

Я уже пробовал приведенный ниже код, а также дал объяснение ниже

 async function fun1(req, res){
  let response = await request.get('http://localhost:3000');
    if (response.err) { console.log('error');}
    else { console.log('fetched response');
}
  

Приведенный выше код в основном просит механизм javascript, выполняющий код, дождаться завершения функции request.get(), прежде чем переходить к следующей строке для ее выполнения. Функция request.get() возвращает обещание, для которого пользователь будет ожидать . Перед async / await, если необходимо убедиться, что функции выполняются в нужной последовательности, то есть одна за другой, соедините их одна за другой или зарегистрируйте обратные вызовы.

Комментарии:

1. опубликуйте некоторый код, который вы пробовали до сих пор

2. Что именно вы подразумеваете под асинхронным ожиданием? Await по умолчанию ожидает выполнения другой задачи, но вы все равно можете запустить другой код просто отлично.

3. Я уже пробовал приведенный ниже код, а также дал объяснение ниже….

Ответ №1:

 async function fun1(req, res){
  let response = await request.get('http://localhost:3000');
    if (response.err) { console.log('error');}
    else { console.log('fetched response');
}
  

Комментарии:

1. Приведенный выше код в основном просит механизм javascript, выполняющий код, дождаться завершения функции request.get(), прежде чем переходить к следующей строке для ее выполнения. Функция request.get() возвращает обещание, для которого пользователь будет ожидать . Перед async / await, если необходимо убедиться, что функции выполняются в нужной последовательности, то есть одна за другой, соедините их одна за другой или зарегистрируйте обратные вызовы.

Ответ №2:

request пакет не использует обещание возврата. Используйте request-promise пакет, который обертывает request с Promise помощью .

Вы можете использовать его как:

 const rp = require('request-promise')

async function getSomeData() {
  try {
    const url = 'http://some.com'
    // waits for promise to resolve
    const data = await rp(url)
    // data contains resolved value if successfull
    // continue some other stuff
    ...
  } catch (e) {
    // handle error if error occurred
    console.error(e)
  }
}