JavaScript承诺和API的问题

JavaScript承诺和API的问题,javascript,promise,Javascript,Promise,你好。我需要从外部API中弹出一个表,并从1个请求中获取大部分信息,但是我需要第二个请求来填充developer列。但是,由于某些原因,my promise函数没有填充表。如果我做错了什么,请告诉我。 字符串devList应该放在document.getElementById(curDev)的innerHTML中 const req1=new XMLHttpRequest(); const rawgAPIkey=“**********************”//这里用的是真正的钥匙 常量bas

你好。我需要从外部API中弹出一个表,并从1个请求中获取大部分信息,但是我需要第二个请求来填充developer列。但是,由于某些原因,my promise函数没有填充表。如果我做错了什么,请告诉我。 字符串devList应该放在document.getElementById(curDev)的innerHTML中

const req1=new XMLHttpRequest();
const rawgAPIkey=“**********************”//这里用的是真正的钥匙
常量baseurl=”https://api.rawg.io/api";
constURL=新url(baseurl+“/游戏”);
var tbl=document.getElementById(“游戏表”);
url.searchParams.set(“key”,rawgAPIkey);
请求1.打开(“获取”,url);
要求1.responseType=“文本”;
请求1.send();
req1.onreadystatechange=函数(){
如果(req1.readyState==4&&req1.status==200){
var gameArr=JSON.parse(req1.responseText).results;
log(JSON.parse(req1.responseText.results);
for(让index=0;index“
+ "" + "  "
+ "" + ""
+“”+gameArr[索引]。已发布+“”
+“”+流派+“”
+“”+agerating+“”
+“”+平台+“”
+“+标记+”;
让curDev=“developerID”+索引;
var url2=新URL(baseurl+“/games/”+gameArr[index].id);
url2.searchParams.set(“key”,rawgAPIkey);
var=”;
异步函数getDev(){
让myProm=新承诺(功能(成功,失败){
const req2=新的XMLHttpRequest();
请求2.打开(“获取”,url2);
req2.responseType=“文本”;
req2.onload=函数(){
如果(需求2.状态===200){
var gamedevs=JSON.parse(req2.responseText).developers;
devList=“”;
for(设i=0;i
编辑2: 通过执行以下操作,我在设置devList的同一函数中填充了表,因此我不再使用承诺:

async function popdevs(){
                let req2= new XMLHttpRequest();
                req2.open("GET", url2);
                req2.responseType="text";
                req2.onload=function(){
                    if(req2.status===200){
                        var gamedevs=JSON.parse(req2.responseText).developers;
                        devList="";
                        for (let i = 0; i < gamedevs.length; i++) {
                            devList += gamedevs[i].name + " ";
                        }
                        document.getElementById(curDev).innerHTML= devList;
                        //console.log(devList);
                        //success(devList);
                        return devList;
                    }else{
                        //console.log("Hello");
                        return "developer unavailable";
                    } 
                    };
                    req2.send();
            }
            popdevs();
异步函数popdevs(){ 设req2=newXMLHttpRequest(); 请求2.打开(“获取”,url2); req2.responseType=“文本”; req2.onload=函数(){ 如果(需求2.状态===200){ var gamedevs=JSON.parse(req2.responseText).developers; devList=“”; for(设i=0;i
你为什么打电话给success(devList)?@NicolásLonghi我是从我所得到的开始工作的,虽然我不完全理解承诺,所以我可能是错的。因此,任何改变都将受到赞赏。应该这样做。看起来你需要自己调试或者创建一个,否则我们无法帮助muchI看到你让它工作。非常好!我建议你做一些关于承诺的培训,并了解它们,因为它们不仅非常有用,而且被广泛使用,所以你将来会遇到它们。你可以在网上找到很多关于这方面的资料。我只想提一点:
async function popdevs(){
                let req2= new XMLHttpRequest();
                req2.open("GET", url2);
                req2.responseType="text";
                req2.onload=function(){
                    if(req2.status===200){
                        var gamedevs=JSON.parse(req2.responseText).developers;
                        devList="";
                        for (let i = 0; i < gamedevs.length; i++) {
                            devList += gamedevs[i].name + " ";
                        }
                        document.getElementById(curDev).innerHTML= devList;
                        //console.log(devList);
                        //success(devList);
                        return devList;
                    }else{
                        //console.log("Hello");
                        return "developer unavailable";
                    } 
                    };
                    req2.send();
            }
            popdevs();