Как получить несколько XMLHttpRequests, чтобы происходить последовательно? - PullRequest
0 голосов
/ 09 июня 2018

У меня есть следующий код, который работает (вроде).Когда я запускаю его, на странице отображается информация о двух монетах, но возвращается «неопределенное» для цены монеты.Вызов alert () указывает, что функция getCoinPrice выполняется ПОСЛЕ основного кода.Как выполнить код, чтобы вызов функции происходил последовательно?Если это невозможно, было бы лучше научиться использовать API Fetch?

Вот код целиком:

<html>
<body>

<h2>Use the XMLHttpRequest to get the content of a file.</h2>

<p id="demo"></p>

<script>

function getCoinPrice(id) {
  var xhr = new XMLHttpRequest();
  var URL = "https://api.coinmarketcap.com/v2/ticker/" + id + "/";

  xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
        var Obj = JSON.parse(xhr.responseText);
        var price = Obj.data.quotes.USD.price;

        alert(price);
        return(price);
    }
  }

  xhr.open("GET", URL, true);
  xhr.send();
}

  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function() {

    if (this.readyState == 4 && this.status == 200) {
        var myObj = JSON.parse(this.responseText);
        var coins = [ "BTC","ETH" ]

        for(j=0; j < coins.length; j++) {
            for(i=0; i < myObj.data.length; i++) {
                if (myObj.data[i].symbol == coins[j]) {
                    document.getElementById("demo").innerHTML += 
                    myObj.data[i].id + "," + myObj.data[i].name + "," +
                    myObj.data[i].symbol + "," +
                    getCoinPrice( myObj.data[i].id ) + "<br>" ;
                }
            }

        }
    }
};

  xmlhttp.open("GET", "https://api.coinmarketcap.com/v2/listings/", true);
  xmlhttp.send();

</script>

</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...