Мне очень нравится программировать с помощью 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;
});
}
Спасибо за комментарий, Мустафа! Есть ли какое-нибудь решение, которое работает таким образом для вызовов API?
Я пытался ответить, но больше не мог. Попробуйте сначала выполнить обещание, обратный вызов или структуру асинхронной функции, чтобы разрешить асинхронный вызов, а затем выполните res.render
попробуйте использовать функцию обратного вызова или обещания



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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