我想感谢您提供的任何帮助。
由于所有的加密货币热潮,我想为我想到的网站制作一个USD到DOGE的转换器。这是我第一次使用jQuery。
脚本转换$ 11 USD(我想提供的服务价格)并将其转换为比特币。然后它将比特币(价值11美元)转换为狗狗币。
问题是,大约一半的时间,脚本返回并添加到“price”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;
});
答案 0 :(得分:9)
你绝对不想放慢速度。您的问题是您没有按正确的顺序获取数据。一个简单的解决方案是连续发出你的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
});
此外,如果您将来需要使用一系列Deferred,请参阅此帖子:https://stackoverflow.com/a/5627301/362536