【发布时间】:2017-09-24 17:06:55
【问题描述】:
写一个像检查机器人一样的小型 Instagram。
它的工作原理是,我有一个对象,它是聊天中的用户列表及其 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 是的,我自己得出了这个结论,请您至少提出建设性意见吗?
-
你检查了我的答案,对你有用吗?
标签: javascript node.js for-loop asynchronous instagram