javascript - 减慢 jQuery JSON 解析速度?

标签 javascript jquery json

非常感谢您提供的任何帮助。

随着加密货币的热潮,我想为我想要的网站制作一个 USD 到 DOGE 转换器。这是我第一次使用 jQuery。

该脚本将 11 美元(我想要提供的服务价格)转换为比特币。然后它将比特币(值(value) 11 美元)转换为狗狗币。

问题是,大约有一半的时间,脚本返回并添加到“价格”h1 文本的数字是 0。如何给 JSON 解析更多时间,以便脚本不会将 0 显示为量?还是还有其他我不知道的问题?

var $BTCUSD = '';
var $BTC = '';
var $DOGEBTC = '';
var $DOGE = '';
var $price = '';

$.getJSON('http://www.cryptocoincharts.info/v2/api/tradingPair/btc_usd', function(btc) {
        $BTCUSD = btc.price;
        $BTC = 11 / $BTCUSD;
    });

$.getJSON('http://www.cryptocoincharts.info/v2/api/tradingPair/doge_btc', function(doge) {
        $DOGEBTC = doge.price;
        $DOGE = $BTC / $DOGEBTC;
        $price = parseFloat($DOGE.toPrecision(2));
        // output
        document.getElementById('price').innerHTML = $price;
    });

最佳答案

你绝对不想放慢任何事情。您的问题是您没有以正确的顺序获取数据。一个简单的解决方案是串行发出 AJAX 请求,但这会浪费时间,因为您当然可以同时获取这两个请求。

最好的解决方案是使用 jQuery's Deferred object以及jQuery.when() .

$.when(
  $.getJSON('http://www.cryptocoincharts.info/v2/api/tradingPair/btc_usd'), 
  $.getJSON('http://www.cryptocoincharts.info/v2/api/tradingPair/doge_btc')
).done(function(btc, doge) {
  // This gets called when both URLs have been retrieved.
  $('#price').text((11/btc.price) / doge.price); // Modify as necessary
});

此外,如果您将来需要使用整个 Deferreds 数组,请参阅这篇文章:https://stackoverflow.com/a/5627301/362536

关于javascript - 减慢 jQuery JSON 解析速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21355925/

相关文章:

javascript - 无法通过单击功能访问 <img> 来更改其 src

javascript - 使用隐藏元素在 div 上搜索过滤器

C# - Json 反序列化具有子属性的对象

java - 实现 JsonObjectRequest 时遇到问题

javascript - 在 Javascript 中检查二维数组边界

javascript - 格式化数组

php - ajax 调用没有响应

javascript - jPlayer-用海报播放一系列mp3文件

javascript - 比较javascript中的时间戳

javascript - JSON 到 Tabulator 表 - Javascript