编写一个小的Instagram,如检查机器人。javascript中的异步函数调用for循环
它是如何工作的,我有一个对象,这是一个聊天用户列表和他们的instagram用户名。
因此,我在这里有一小段代码,它遍历列表,获取每个用户名的最新媒体帖子的相似者,并在循环中进行检查。然而,我所面临的问题是循环内部存在异步调用,并且循环不断重复,但异步调用的结果稍后才会发生。但是,这不是我想要的操作方式。有人能告诉我如何克服这一点,或以异步方式做到这一点的正确方法?谢谢 下面是我的代码,其中还有一个注释,其中显示了列表对象的格式,以防万一有人想知道。由于
bot.on('/check', (msg) => {
list['12345'] = {username:'someguy', list:['@the.haider.ali']};
list['45678'] = {username:'someguy2', list:['@vishnuvayala']};
if(list.length != 0){
for(i in list){
var list2 = JSON.parse(JSON.stringify(list));
delete list2[i];
for(x in list2){
for(y in list2[x].list){
let checkis = list2[x].list[y]
console.log("Checking "+checkis);
getInstaID(checkis).then(function(userid){
return getMediaID(userid);
}).then(function(mediaid){
return getLikers(mediaid);
}).then(function(likers){
console.log("Last liker is "+likers[0].username);
});
console.log("Done checking "+checkis);
}
}
}
}
});
这里的输出我得到
Checking @the.haider.ali
Done checking @the.haider.ali
Checking @vishnuvayala
Done checking @vishnuvayala
Last liker is ghetto._boy
Last liker is dk.gayathri
你需要做到这一点在异步方式,你混合同步和异步 –
@RahulSingh是啊,我已经得出这个结论我自己,请你提供一个建设性至少评论? –
你检查我的答案,它适合你吗? – Firanolfind