2016-05-16 53 views
0

我目前正在爲使用口袋妖怪API的學校開展一個項目,該項目將顯示進化寵物小精靈所需的信息(請注意,我對javascript和HTML完全陌生)。
鏈接:http://pokeapi.co/docsv2/
該網站將要求用戶輸入一個名稱,該名稱將用於獲取我正在查找的主要信息的網址。
例如:如果有人進入皮卡丘,程序會向皮卡丘請求包含皮卡丘進化鏈的網址,並且該網址將提供網站的主要信息。
目前的代碼如下所示:如何延遲一個方法,直到另一個完成第一,JavaScript?

var pokemon = new XMLHttpRequest(); 
var name = prompt("Whats the name of the pokemon you have?").toLowerCase(); 
var url = "http://pokeapi.co/api/v2/pokemon-species/" + name; 
var url2; 


pokemon.onreadystatechange = function(){ 
    if(pokemon.readyState == 4 && pokemon.status == 200){ 
     var myArr = JSON.parse(pokemon.responseText); 
     var url2 = myArr.evolution_chain; 

    } 
} 
pokemon2.onreadystatechange = function() { 
    if (pokemon2.readyState == 4 && pokemon2.status == 200) { 
     var myArr2 = JSON.parse(pokemon2.responseText); 
     console.log(myArr2.chain.species.name); 
    } 
} 
var pokemon2 = new XMLHttpRequest(); 
pokemon2.open("GET", url2, true).done(onreadystatechange); 
pokemon2.send(); 

pokemon.open("GET", url, true); 
pokemon.send();  

但是該程序不會因爲一個事實,即在同一時間和pokemon2正在發生越來越應該只寵物小精靈之後調用工作已經完成,因爲這是獲得pokemon2的真實網址。
有誰知道如何做到這一點?
非常感謝! :)。

+0

使用JS回調?還是JS承諾? – user3207158

回答

1

您可以撥打pokemon2一次pokemon飾面:

pokemon.onreadystatechange = function(){ 
    if(pokemon.readyState == 4 && pokemon.status == 200){ 
     var myArr = JSON.parse(pokemon.responseText); 
     var url2 = myArr.evolution_chain; 

     // Call pokemon2 here 
     var pokemon2 = new XMLHttpRequest(); 
     pokemon2.open("GET", url2, true); 
     pokemon2.send(); 

    } 
} 
相關問題