#node.js #async-await #axios
#node.js #асинхронное ожидание #axios
Вопрос:
Я пытаюсь сделать простой GET
запрос, axios
который следует за перенаправлением до тех пор, пока сеть не простаивает, но я не могу получить обещание разрешить. Похоже, это работает для большинства URL-адресов, но не для приведенного ниже URL-адреса, в частности — не уверен, есть ли проблема с моим кодом или что-то особенное для этого перенаправления (другие похожие форматы работают нормально, т. Е. С разными mid=XXXX
параметрами.
GET
Запрос (без заголовков или авторизации) перенаправляется нормально в Postman, но axios
ничего не возвращает.
async function axiosGet() {
try {
const response = await axios.get("http://www.awin1.com/awclick.php?mid=4802");
console.log(response);
return response;
} catch (err) {
console.log(err);
}
}
Запустив это, я получаю только ответ на запрос bash, в котором ничего не зарегистрировано. Присвоение моей axiosGet()
функции переменной, а затем регистрация этой переменной только приводит Promise { <pending> }
к результату . Просто хочу получить разрешенный объект promise, хорошо идти оттуда.
Комментарии:
1. консоль. журнал не нужен
await
….axiosGet вернет новое обещание, если вы получаете от этого метода, который вы должны вызвать следующим образом:await axiosGet
2. Спасибо — удалили
await
раньшеconsole.log(response)
. Но обертываниеaxiosGet()
в другую асинхронную функцию и вызовawait axiosGet();
дают тот же результат (ожидающее обещание).3.
console.log(response)
распечатать ожидающее обещание?4. Извините, нет, если я вызываю
axiosGet()
или вызываю функциюasync function myFunction() { await axiosGet(); }
(за которой следует вызов функцииmyFunction();
), она вообще ничего не делает (просто возвращается к подсказке bash). Если, например. в другой асинхронной функции Ilet myVar = await axiosGet(); console.log(myVar);
результат регистрируетсяPromise { <pending> }
следующим образом .5. Проблема, по-видимому, связана с
axios
обработкой 302 (или других?) перенаправлений, и если есть цикл перенаправления, он, похоже, не выдает ошибку. Провели рефакторинг для использованияurllib
вместо этого, который выдает объект ошибки, с которым я могу работать, но кажется неудовлетворительным ответом.