node.js - 在循环完成执行之前发生返回
问题描述
我正在使用 for 循环,并且在循环完成执行之前发生了返回。我不能使用 .Map 方法,因为我在两者之间有一些条件并且想要打破两者之间的循环。
const getCompanies = async(searchURL,reqBody) => {
const html = await rp(baseURL + searchURL);
businessMap = cheerio('a.business-name', html);
for(var i=0; i < businessMap.length; i++) {
linkNew = baseURL + businessMap[i].attribs.href;
const innerHtml = await rp(linkNew);
..
...My Code with conditions here
.....
......
......
values.push( [a,b,c,d,e,f]);
}
return values
}
解决方案
我在这里看到 2 个选项:
- 你有一个
break
在它说的地方被执行的My code with conditions here
。 rp
不返回Promise
.
至于第二个选项,这里有一个快速代码,向您展示 async 函数的最后一行仅在所有await
s 完成时才会执行:
const delay = (ms) => {
return new Promise(r => {
setTimeout(r, ms);
console.log("delayed", ms);
});
}
const run = async () => {
for (var i = 0; i < 3; i++) {
await delay(1000);
}
console.log("finished");
}
run();
推荐阅读
- javascript - jQuery 加载是否不显示内容?
- multithreading - 在线程中连接 QProcess QT5-Style
- reactjs - 样式化组件:如何定位直接子级?
- regex - 从 netstat 命令中提取端口号
- android - 当我们尝试测试功能时,该应用未出现在 Android Auto 屏幕中
- c# - Azure IoT 中心自动还原设备孪生中的更改
- javascript - 使用while循环查找JS数组中最常见的项目?
- android - 使用 FragmentScenario 如何在我的 Android 仪器测试中出现错误?
- mongodb - MongoDB查询很慢(使用索引)
- c++ - 尝试使用实用程序功能时出现重复符号错误