Javascript 将从API检索的变量相乘
我对JavaScript和Coffeescript非常陌生。我可以成功地检索到2个值(btsx\u btc和btsc\u USD)。我想把这2个变量乘以中间变量。但是它不工作,控制台没有显示任何错误。我假定这两个变量不知何故是空的。我希望你们能帮忙 这是javascript的输出Javascript 将从API检索的变量相乘,javascript,coffeescript,Javascript,Coffeescript,我对JavaScript和Coffeescript非常陌生。我可以成功地检索到2个值(btsx\u btc和btsc\u USD)。我想把这2个变量乘以中间变量。但是它不工作,控制台没有显示任何错误。我假定这两个变量不知何故是空的。我希望你们能帮忙 这是javascript的输出 getValue = ( url, callback) -> $.getJSON url, (json) -> value = json.last callback value $
getValue = ( url, callback) ->
$.getJSON url, (json) ->
value = json.last
callback value
$(window).load ->
btsx_btc = getValue "http://data.bter.com/api/1/ticker/btsx_btc", (data) ->
$('#v_btsx_btc').html data
btc_usd = getValue "http://data.bter.com/api/1/ticker/btc_usd", (data) ->
$('#v_btc_usd').html data
$('#v_btsx_usd').html btsx_btc*btc_usd
btc_usd
和btsx_btc
是承诺,而不是数字!你不能简单地将它们相乘——你也不能。而是使用等待两个值到达:
(function() {
var getValue;
getValue = function(url, callback) {
return $.getJSON(url, function(json) {
var value;
value = json.last;
return callback(value);
});
};
$(window).load(function() {
var btc_usd, btsx_btc;
btsx_btc = getValue("http://data.bter.com/api/1/ticker/btsx_btc", function(data) {
return $('#v_btsx_btc').html(data);
});
btc_usd = getValue("http://data.bter.com/api/1/ticker/btc_usd", function(data) {
return $('#v_btc_usd').html(data);
});
return $('#v_btsx_usd').html(btsx_btc * btc_usd);
});
}).call(this);
我只需要从data1和data2中删除[],因为它是1值,而不是数组,因为我已经删除了。最后一个是getValue函数中的json。然后它完美地工作了!谢谢没错,我忽略了
getJSON
和自定义then
映射都不会返回多个参数。
getValue = (url) ->
$.getJSON url
.then (json) ->
json.last
$(window).load ->
btsx_btc = getValue "http://data.bter.com/api/1/ticker/btsx_btc"
btsx_btc.done (data) ->
$('#v_btsx_btc').html data
btc_usd = getValue "http://data.bter.com/api/1/ticker/btc_usd"
btc_usd.done (data) ->
$('#v_btc_usd').html data
$.when btsx_btc, btc_usd
.done (data1, data2) ->
$('#v_btsx_usd').html data1*data2