Как получить значение из асинк функции с fetch?

Требуется получить через get-запрос данные для последующей обработки. Но функция возвращает Promise { <pending> }. С node.js практически не знаком, пробовал разные решения, найденные в интернете, но результат всегда был тот же. Понимаю, что команда на вывод результата в консоль выполняется раньше, чем завершается функция. Но как это решить, не понимаю.

const readline = require('readline-sync');
const key = '';

async function hydrusTags(tags){
	let url = 'http://127.0.0.1:45869/get_files/search_files?Hydrus-Client-API-Access-Key='+key+'&tags=%5B%22'+tags+'%22%5D';
	let req = await fetch(url).then((res) => res.json());
	return req;
}

var query = readline.question('Enter tags:\n');
var foundIds = hydrusTags(query);

console.log(foundIds);


В конце в консоль выводится результат для проверки, что всё верно прошло. Вместо неё будет дальнейшая обработка полученных данных.
  • Вопрос задан
  • 586 просмотров
Решения вопроса 3
@Hovo_Varosyan
я тоже новичок но думаю можешь использовать foundIds.then и в then написать код так как возвращается promise или создать ешё один async function и там var foundIds = await hydrusTags(query); и дальнейший код
Ответ написан
victormayorov
@victormayorov
Frontend разработчик
const readline = require('readline-sync');
const key = '';

 function hydrusTags(tags){
	let url = 'http://127.0.0.1:45869/get_files/search_files?Hydrus-Client-API-Access-Key='+key+'&tags=%5B%22'+tags+'%22%5D';
	return fetch(url).then(res => res.json());
}

var query = readline.question('Enter tags:\n');
hydrusTags(query).then(foundIds => console.log(foundIds));
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
- var query = readline.question('Enter tags:\n');
- var foundIds = hydrusTags(query);
- console.log(foundIds);
+async function main() {
+   const query = readline.question('Enter tags:\n');
+   const foundIds = await hydrusTags(query);
+   console.log(foundIds);
+ }
+ main();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы