Javascript 如何使用Axios数据请求显示数据?

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')

您好,我正在关注一段youtube视频,内容是关于如何使用electron制作BTC价格跟踪器,我遇到了一个问题。我找到了解决办法,让它发挥作用,但我只想指出正确的方向,以进一步了解为什么这是一个解决办法。我将在下面提供我最初的尝试和正确的解决方案

    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

啊,我明白了,谢谢你。它把它清理干净了。第一个函数更像是一个测试,看看我是否真的得到了任何数据。再次感谢你!谢谢你的回复!现在我想起来,这很有道理。