Stack Overflow на русском Asked on December 18, 2021
Не могу понять.
Вот есть функция, которая через 5 сек возвращает хеллоу
function sayHello(){
setTimeout(() => {
var data='hello'
return data;
}, 5000)
}
module.exports = sayHello;
В другой функции хочу это вывести,
const getHello = require('../DB/remote/methods-api/getPopularProduct') // тут getHello() = sayHello()
async function viewHello() {
console.log("await "+ await getHello());
}
но выводит всегда undefined. Пробовал промисами, тоже самое.
У вас тут небольшая путаница:
sayHello()
через 5 секунд не возвращает 'hello'
. Она устанавливает таймаут и тут же возвращает undefined
, который и получает функция в импортирующем файле. 'hello'
возвращает фукнция, установленная в таймауте, но возвращает его «в пустоту», потому что возвращённое значение нигде не принимается.
Импортируемая функция не возвращает Promise и не является асинхронной, поэтому await
перед её вызовом не имеет смысла.
Кажется, то, чего вы пытаетесь добиться, можно реализовать так:
function sayHello() {
return new Promise((resolve) => {
setTimeout(() => {
const data = 'hello';
resolve(data);
}, 5000);
});
}
module.exports = sayHello;
const getHello = require('./module.js');
async function viewHello() {
console.log("await " + await getHello());
}
viewHello();
Answered by vsemozhebuty on December 18, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP