【发布时间】:2020-08-10 10:03:48
【问题描述】:
所以基本上我知道我的代码问题出在哪里
export async function hourlyUpdate(bot:Discord.Client){
let result=new Promise<ActiveSubscriberList>(async (resolve,reject)=>{
let fileData=await getDataFromFile()
let resultList:ActiveSubscriberList={Server:[]}
fileData.channels.forEach(async(element,index)=>{
let tempArr=[]
element.subscriber.forEach(element => {
tempArr.push(element.userID)
})
let tempEntry={Channel:element.channelID,Subscriber:await actualFetch(bot,element.guildID,tempArr)}
resultList.Server.push(tempEntry)
})
resolve(resultList)
}).then(value=>{
})
return result
}
async function actualFetch(bot:Discord.Client,guildID:string,userArr:string[]){
let result= new Promise<string[]>(async (resolve)=>{
let activeSubs=[]
let tempSubArray=await bot.guilds.cache.get(guildID).members.fetch({ user: userArr, withPresences: true })
tempSubArray.forEach(element=>{
activeSubs.push(element.user.id)
})
resolve(activeSubs)
})
return result
}
我认为问题在于循环继续,尽管其他异步函数的结果没有得到解决。
我的问题是,是否有人知道如何重新编码这些循环,以便整个函数实际上返回结果而不是空对象。任何其他有关如何使此代码更好的 cmets、提示和建议也值得赞赏。
【问题讨论】:
-
您不能将
async与forEach一起使用,将其切换到for...of循环。 stackoverflow.com/questions/37576685/…
标签: typescript async-await discord.js