#javascript #async-await
#javascript #async-await
Вопрос:
Я создаю приложение в node.js , я хочу вызвать асинхронную функцию в users.js файл, который определен внутри middleware/index.js файл , я определил функцию в index.js и обернул его в объект (по какой-то причине) и экспортировал этот объект:
определение функции в middleware/index.js:
middlewareObj.getPostsHomePage = async function(obj){
await getPostsHomePageTrending(obj, getPostsHomePagePopular);
console.log(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
console.log(obj)
return obj;
}
module.exports = middlewareObj;
users.js :
const middlewareObj = require("../middleware/index.js");
await middlewareObj.getPostsHomePage(obj);
при запуске кода я получаю сообщение об ошибке:
await getPostsHomePage(obj);
^^^^^
SyntaxError: await is only valid in async function
В чем причина этой ошибки и как я могу ее решить?
Комментарии:
1. В users.js вы используете await, не находясь в асинхронной функции.
2. если это в модуле nodejs, вы можете использовать await верхнего уровня, но он должен быть модулем (т. Е. Использовать импорт / экспорт, а не module.exports / require)
Ответ №1:
await
ключевое слово может использоваться только внутри async
функции:
async function() {
await getPostsHomePage(obj);
}
Вы также можете использовать обещания, если вам не нужно использовать async
функцию:
getPostsHomePage(obj).then(result => {
console.log(result); // Do your stuff here later
})