javascript - 异步/等待问题(返回未定义)猫鼬
问题描述
当我调用方法interval时,我从方法allUserStats得到的参数user总是未定义的。这是方法
const interval = async () => {
const allUsers = await getAllUser();
for (const u of allUsers) {
let user;
let followerScore;
let subscriberScore;
//let hostsScore;
let viewerScore;
await getAllUserStats(u.login_name).then(async (userStats)=>{
user = userStats;
...
getAllUserStats 方法如下所示:
const getAllUserStats = async (login_name) => {
await userstats.findOne({login_name}).then(async(userStats)=>{
if(userStats===null){
let user = new userstats({
login_name:login_name,
followers: [],
subscribers: [],
hosts: [],
viewers: []
})
await user.save();
return user;
}
else{
return userStats;
}
})
}
我认为这是一个异步等待问题,但我不知道。有什么建议我可以解决这个问题吗?
解决方案
您正在混合 async/await 并使用promise.then
- 您可以将其全部编写出来,async/await
这样会更容易:
const getAllUserStats = async (login_name) => {
const userStats = await userstats.findOne({login_name})
if(userStats===null){
let user = new userstats({
login_name:login_name,
followers: [],
subscribers: [],
hosts: [],
viewers: []
})
await user.save();
return user;
}
else{
return userStats;
}
}
推荐阅读
- microsoft-graph-api - 如何获取消息的 immutalbeId
- sql - SQL Server:在选择语句中按不同条件转换列
- c++ - 在没有 XCHG 的情况下实现自旋锁?
- go - 如何读取 app.yaml 中的环境变量?
- typescript - Vue 3 + Typescript - 如何查看类属性
- simulator - Ubuntu 20.04 在 gem5 模拟器中使用共享库
- android - 从 webview 打印功能保存 PDF 总是产生 0 大小的无效 PDF 文件
- r - 使用不带 .tif 和 .shp 文件的 ggplot2 创建栅格
- python - 使用循环连接多个变量的字符串和整数并调用变量
- c++ - 如何将其切换为使用完全智能指针?