Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将从API检索的变量相乘_Javascript_Coffeescript - Fatal编程技术网

Javascript 将从API检索的变量相乘

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 $

我对JavaScript和Coffeescript非常陌生。我可以成功地检索到2个值(btsx\u btc和btsc\u USD)。我想把这2个变量乘以中间变量。但是它不工作,控制台没有显示任何错误。我假定这两个变量不知何故是空的。我希望你们能帮忙

这是javascript的输出

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