gpt4 book ai didi

javascript - javascript中for循环内的异步函数调用

转载 作者:行者123 更新时间:2023-12-03 03:24:33 25 4
gpt4 key购买 nike

编写一个小型 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

最佳答案

尝试使用异步等待。异步函数可以被await/promise阻塞,数组迭代可以被阻塞直到await响应。

不要害怕 Await 表达式。它只会阻塞函数,直到无法解决相同的众所周知的 Promise。

请检查是否有效。

bot.on('/check', async function(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);
var userid = await getInstaID(checkis);
var mediaid = await getMediaID(userid);
var likers = await getLikers(mediaid);
console.log("Last liker is "+likers[0].username);
console.log("Done checking "+checkis);
}
}
}
}
});

输出应该是这样的

Checking 0
Last liker is likers: 0
Done checking 0
Checking 1
Last liker is likers: 1
Done checking 1
Checking 2
Last liker is likers: 2
Done checking 2

关于javascript - javascript中for循环内的异步函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46392659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com