Node.js в настоящее время не допускает верхнего уровня await
вне асинхронной функции.Кроме того, не похоже, что функция async
выполняется асинхронно в области действия и в контексте app.js
, нет ничего, что позволяло бы процессу узла узнать, что она ожидает завершения login()
.
Попробуйте следующее
В app.js
const request = require('./request');
// Immediately invoke the async function
const login = (async function() {
const response = await request.postAsync("https://httpbin.org/post");
// You could just do showData(response.data) here if your goal is just to log it
return response;
})();
var response = showData(response.json());
function showData(data) {
console.log(data);
}
Также в вашем файле request.js
, на самом деле не имеет смысла return await response
, так как вы уже await
ingобъявление переменной.Вы также можете просто сделать следующее:
Я пытаюсь выполнить асинхронный веб-запрос и хочу использовать возвращаемые данные в другой функции.
request.js
var fetch = require('node-fetch')
async function postAsync(url) {
return await fetch(url,
{
method: "POST",
headers: {
'Content-Type': 'application/json',
'User-Agent': 'AirPlay/320.20',
'Connection': 'keep-alive'
},
body: {},
encoding: null
});
}
module.exports = {
postAsync
}