2016-05-16 54 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(); 

    } 
} 
相关问题