Javascript 如何使用Axios数据请求显示数据?
您好,我正在关注一段youtube视频,内容是关于如何使用electron制作BTC价格跟踪器,我遇到了一个问题。我找到了解决办法,让它发挥作用,但我只想指出正确的方向,以进一步了解为什么这是一个解决办法。我将在下面提供我最初的尝试和正确的解决方案Javascript 如何使用Axios数据请求显示数据?,javascript,electron,Javascript,Electron,您好,我正在关注一段youtube视频,内容是关于如何使用electron制作BTC价格跟踪器,我遇到了一个问题。我找到了解决办法,让它发挥作用,但我只想指出正确的方向,以进一步了解为什么这是一个解决办法。我将在下面提供我最初的尝试和正确的解决方案 function getBTC() { // var strr = []; axios.get('https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD')
function getBTC() {
// var strr = [];
axios.get('https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD')
.then(function(response){
// strr.push(response.data);
console.log(response.data);
// const cryptos = strr
// price.innerHTML = '$' + cryptos.toLocalString('en');
})
.then(res => {
// const cryptos = res.data
const cryptos = res.data.BTC.USD
price.innerHTML = '$'+cryptos.toLocaleString('en')
})
}
这是正确的解决方案
function getBTC() {
axios.get('https://min-api.cryptocompare.com/data/pricemulti?fsyms=BTC&tsyms=USD')
.then(res => {
const cryptos = res.data.BTC.USD
price.innerHTML = '$'+cryptos.toLocaleString('en')
})
}cryptos = res.data.BTC.USD
price.innerHTML = '$'+cryptos.toLocaleString('en')
})
}
我能够访问数据,它在控制台中正确显示,但在应用程序窗口中无法正确更新。再次,我只是想澄清一下为什么第二个代码能够正常工作,谢谢 我认为,因为您使用了两次带有响应参数的函数,但形式不同,在第一种情况下,它是一个常规函数,在第二种情况下,它可能是一个箭头函数,这就是我开始寻找的地方,希望这会有所帮助 您的两种解决方案都不完美,您可能有一些未注意到的错误 在第一个解决方案中,您忘记了将值返回到下一个
回调函数。因为在第一个中没有返回任何值,所以第二个中的res
变量是未定义的。在然后
回调中返回
值是至关重要的,否则下一个然后
回调没有可使用的值。我建议你仔细阅读一下承诺是如何起作用的
在第二种解决方案中,您的代码可以正确运行此段
function getBTC() {
axios.get('https://min-api.cryptocompare.com/data/pricemulti?fsyms=BTC&tsyms=USD')
.then(res => {
const cryptos = res.data.BTC.USD
price.innerHTML = '$'+cryptos.toLocaleString('en')
})
}
之后的所有操作都会在控制台中抛出一个错误,因为res
在then
方法的范围之外不可用。上述示例之后的代码在语法上是不正确的。在第一种情况下,第一个.then()
不返回承诺(或任何内容),因此第二个.then()
不接收任何作为参数的内容(res
是未定义的)
在第二种情况下,所有操作都在第一个.then()
块中完成,其中定义了response
。啊,我明白了,谢谢你。它把它清理干净了。第一个函数更像是一个测试,看看我是否真的得到了任何数据。再次感谢你!谢谢你的回复!现在我想起来,这很有道理。