javascript - for 循环在异步函数中给出部分输出
问题描述
我得到函数调用的部分输出。谁能告诉我做错了什么
MongoDB中JSON格式的数据库中的数据
功能码
async function isTeamNameExists(department, teamID) {
var store = await new Promise(async (resolve, reject) => {
//database read function
db.readCollection(collection_name, (status, data) => {
if (status) {
var teamname = new SB.ListofNames();
teamname.listofboards = data;
var send = teamname;
console.log("send----->", send);
//checking for teamname exists?
for (var boardindex = 0; boardindex < send.listofboards.length; boardindex++) {
var tn = send.listofboards[boardindex];
if (tn.department == department && tn.teamId == teamId) {
resolve(tn);
} else {
resolve(null);
}
}
reject(null);
}
});
});
console.log("store---->", store); // the function return value =store
return (store);
//resolve(store); does not work
}
函数调用 1
var output1 = isTeamNameExists(D1,11);
Result-> {department:D1 , teamId:11} // 存在 -> 返回 teamId=11 的特定 json 数据
函数调用 2
var output2= isTeamNameExists(D2,22);
Result-> null // 它不应该返回 null,但应该返回 {department:D2 , teamId:22}
函数调用 3
var output3= isTeamNameExists(D78b,22000211);
结果-> null // 它应该返回 null。正确的输出
> 所以我得到了部分输出。你能告诉我我做错了什么吗?我是 javascript 新手,每天都在学习一些东西。
解决方案
由于条件,您的函数正在解决for (var boardindex = 0; boardindex < send.listofboards.length; boardindex++)
循环中第一次运行完成的那一刻else
。
您希望循环遍历所有项目,reject
如果没有找到条目(您做得正确。)
删除下面的部分,你会很好。
} else {
resolve(null);
//resolve(store); does not work
将不起作用,因为isTeamNameExists
功能不是承诺。
推荐阅读
- reactjs - 如何使用 React 在全日历中一一显示 3 个月
- html - 您如何在 HTML/jQuery 中使用输入 id 作为参数将文件分块发布到服务器?
- reactjs - React bootstrap image 和 fontawesome close toghether
- python - 计算 TOPc 时结果不正确
- linux - 使用 docker-compose 和绑定挂载在 Linux 上创建 Docker-Postgres-Container,这样 dir 包含 pgres-data 并且不属于 root
- python - 使用从 XML (Python) 中提取的值重命名子目录
- javascript - 如何获取添加的文本框的值
- django - 几分钟后如何在 Django 中再次运行设置功能
- drupal-8 - 如何在drupal中更改文件url
- visual-studio-code - VSCode:在特定编辑器端打开与给定项目相关的文件