javascript - 异步等待 http 请求处理
问题描述
我有一个异步等待函数,它在循环中无序处理项目。在完成之前如何检查数组中的每个项目!日志到控制台?因此,每次链接出错时,它都应该在与之关联的索引号之后记录错误。例如:
0
此处错误https://test123.com/ergaergrhaerha0
1
2
3
此处错误https://test123.com/ergaergrhaerha3
...
完成!
processArray(ftJsonBySeqAssets);
async function processArray(arr) {
for (i in arr) {
console.log(i)
await https.get(arr[i].image_link, async (res) => {
await console.log(res.statusCode, arr[i].image_link)
if (res.statusCode === 404) {
console.log('ERROR HERE', arr[i].image_link)
audience.error.image_link.push(arr[i].image_link)
audience.error.count++
}
});
await https.get(arr[i].link, async (res) => {
await console.log(res.statusCode, arr[i].link)
if (res.statusCode === 404) {
console.log('ERROR HERE', arr[i].link)
audience.error.link.push(arr[i].link)
audience.error.count++
}
});
}
console.log('done!')
}
日志:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
done!
ERROR HERE https://test123.com/ergaergrhaerha1
ERROR HERE https://test123.com/ergaergrhaerha1
ERROR HERE https://test123.com/ergaergrhaerha1
ERROR HERE https://test123.com/ergaergrhaerha1
ERROR HERE https://test123.com/ergaergrhaerha1
ERROR HERE https://test123.com/ergaergrhaerha1
ERROR HERE https://test123.com/ergaergrhaerha1
ERROR HERE https://test123.com/ergaergrhaerha1
ERROR HERE https://test123.com/ergaergrhaerha1
ERROR HERE https://test123.com/ergaergrhaerha1
ERROR HERE https://test123.com/ergaergrhaerha1
解决方案
看起来好像https.req
没有返回一个承诺,所以你必须自己构造一个然后等待:
const res = await new Promise(resolve => https.get(arr[i].link, resolve));
if (res.statusCode === 404) {
//...
}
//...
推荐阅读
- php - 如何连接 Zebra 打印机 ZD220 或 Gc420t 并打印?
- java - 运行 Mockito 测试用例时出现空指针异常
- python - 检查一个字符串是否包含另一个字符串的所有元素的函数
- sql - 我有错误的 sql 查询
- rest - 如何在服务器端执行过程中停止执行rest webservice?
- reactjs - React Native 在两个屏幕中的两个类组件之间传递数据
- oracle - Oracle Cursor 从连续插入记录的表中读取
- r - 在ggplot2中为组轴标签添加方括号
- mongodb - 为什么我的 GKE 节点被抢占后,我失去了与 MongoDB 的连接?
- java - 带有 maven 和 tanuki 包装的弹簧靴