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
我是JavaScript和Coffeescript的新手。我可以成功检索2个值(btsx_btc& btsc_USD)。我想将这两个变量相乘并在中间显示它。但它不起作用,控制台没有显示任何错误。我假设2个变量以某种方式为空。我希望你们能帮忙
这是输出javascript
(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);
答案 0 :(得分:1)
btc_usd
和btsx_btc
是承诺,而不是数字!你不能简单地将它们相乘 - 而你can't make the asynchronous getJSON
return a number。相反,请使用jQuery.when
等待两个值到达:
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