【问题标题】:Fetch Multiple Api URLs And Store Data In An Array获取多个 Api URL 并将数据存储在一个数组中
【发布时间】:2019-06-21 13:43:29
【问题描述】:

我正在尝试将获取的数据存储到包含其名称和价格的数组中。 但问题出在浏览器窗口上只有一个的结果。使用 SCBTC 或 XLMBTC ..多次刷新它会切换。我可以在 2 行中同时获取这两个查询,我可以单独存储吗?是有可能吗?

<body>
    <div id="a"></div>
</body>

<script>
    "use strict";

    var pair = ["SCBTC","XLMBTC"];
    var url = "https://api.binance.com/api/v1/ticker/price?symbol=";


    for(var i=0; i<2; i++) {

      fetch(url + pair[i])
        .then(function(resp) {
          return resp.json();
        })
        .then(function(data) {
          console.log(data); 

          var x = document.getElementById("a");
          x.innerHTML= JSON.stringify(data); + "<br/>"; 
        });
    }
</script>

【问题讨论】:

  • 由于您将两个结果写入同一个 div,因此只会显示从服务器返回的最后一个结果。所以要么使用多个 div,要么添加到 innerHTML 而不是完全替换它。
  • 好的...我明白了..但是要将它们切换到多个 div 元素?如何识别返回的每个数据?
  • 那应该在data 的里面吗?

标签: javascript html arrays json api


【解决方案1】:

您可以使用Promise.all 获得多个结果:

<body>
<div id="a"></div>
</body>

<script>
"use strict";

    var pair = ["SCBTC","XLMBTC"];
    var url = "https://api.binance.com/api/v1/ticker/price?symbol=";


    Promise.all(
      pair.map(p=>fetch(url+p).then(r=>r.json()))
    ).then(
      results=> {
        console.log(data); 
      }
    );
</script>

【讨论】:

  • 什么都不显示..在参数列表之后缺少一个左括号..当我说它显示数据未定义时:-(
  • @Aashiq 没有关闭 map() 括号,您现在应该在控制台中看到一些内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-15
  • 2019-12-22
  • 2017-05-09
  • 2016-06-21
  • 2017-02-21
  • 2020-06-27
  • 1970-01-01
相关资源
最近更新 更多