Express.js: проблема с асинхронностью при вызове API

Мне очень нравится программировать с помощью node.js и особенно express.js.. Сегодня я столкнулся с типичной проблемой асинхронности. Я много читал об этих проблемах и возможных решениях, но что лучше всего использовать с express.js?

Пытался перенести обратный вызов, но не получается. Я должен признать, что я своего рода новичок в этой области, и я был бы признателен за возможные решения от сообщества :).

Я думаю, что проблема в следующем коде заключается в том, что вызов функции getUserDataFromSpotify(cookieAccessToken) - это async, а следующая строка не может получить идентификатор переменной inputData так же быстро, как функция возвращает значение.

app.get('/landingpage', function(req, res){
  var cookieAccessToken = req.cookies.access_token;
  var inputData = getUserDataFromSpotify(cookieAccessToken);
  res.render('UserProfile', {display_name: inputData.id});
});

function getUserDataFromSpotify(userToken){
 var options = {
   url: 'https://api.spotify.com/v1/me',
   headers: { 'Authorization': 'Bearer ' + userToken },
   json: true
 };
 request.get(options, function(error, response, body) {
      console.info(response.statusCode);
      console.info(body);
      return body;
});
}

Вы пытаетесь использовать асинхронную функцию в качестве синхронной функции, которая неверна в NodeJS.

Mustafa Mamun 21.05.2018 10:34

Спасибо за комментарий, Мустафа! Есть ли какое-нибудь решение, которое работает таким образом для вызовов API?

tobsonponte 21.05.2018 10:39

Я пытался ответить, но больше не мог. Попробуйте сначала выполнить обещание, обратный вызов или структуру асинхронной функции, чтобы разрешить асинхронный вызов, а затем выполните res.render

Mustafa Mamun 21.05.2018 10:43

попробуйте использовать функцию обратного вызова или обещания

Kunalan Krish 21.05.2018 10:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
22
0

Другие вопросы по теме