我正在nodejs中使用axios发出xhr请求。我试图将这个响应中的一个值保存到一个变量中,但它不起作用,我也不知道为什么。
代码:
let redirectUrl = 'placeholder'
axios.get(url)
.then(res => {
redirectURL = res.url
console.log(res.url, "HERE")
})
.catch(err => console.log(err))
return res.render('index',{url: redirectURL})
我试过申报 redirectUrl
在全球范围内 var
和本地范围,但值没有改变,在索引上,当我控制台记录这个值时,它会记录 placeholder
. index是index.jsx,因为我使用jsx作为模板引擎。如果我需要提供更多信息,请告诉我。先谢谢你。
2条答案
按热度按时间omqzjyyz1#
axios.get
是一个异步调用,因此您的返回将使用原始(placeholder
)值而不是新值。通常,为了解决这种异步性,我使用async/await
```async function getRedirectURL(url) {
try {
const res = await axios.get(url);
// Note that if you want some return value from axios call you access it by res.data
console.log('res.url :', res.url, ". res.data:", res.data);
return res.render('index',{url: res.data.url});
} catch (err) {
console.log(err);
throw err;
}
}
jgovgodb2#
axios是一个基于promise的http客户端,因此当javascript引擎执行代码时,它将axios调用从callstack(第2行)移动到web api,然后开始执行最后一行返回
res.render('index',{url: redirectURL})
其中,重定向URL值是占位符。你必须在promise-then方法中写下所有的逻辑,比如