Привет, я пытаюсь использовать асинхронную функцию для возврата ответа от входа в систему
Проблема в том, что res.json возвращается до того, как он содержит reponse.
const routes = require('express').Router();
const request = require('request');
const bodyParser = require("body-parser");
routes.use(bodyParser.json());
routes.use(
bodyParser.urlencoded({
extended: true
})
);
routes.post('/login', async function (req, res) {
let options = {
form: {
username: req.body.username,
password: req.body.password
}
};
var data = await request.post(
req.url,
options,
await function (error, response, body) {
if (error) {
console.info(error);
}
// The data I want
return response;
}
)
//This returns before it includes response
res.json(data);
});
module.exports = routes;
Любые идеи ?
Вы не можете использовать await с чем-то, кроме Promise. Функции, основанные на обратном вызове, не являются обещаниями.





Вам следует использовать запрос-обещание. Async-await работает только с обещаниями, поэтому вам нужно сначала преобразовать библиотеку запросов в обещанную форму. Используйте модуль ниже npm для обещанной версии библиотеки запросов.
https://www.npmjs.com/package/request-promise
Да, я буду, но ТАК хочу, чтобы я подождал, пока вопрос не истечет 15 минут
Возможный дубликат Как мне вернуть ответ от асинхронного вызова?