异步等待HTTP请求处理



我有一个异步等待功能,该功能正在循环中处理项目。在完成之前,如何检查阵列中的每个项目!日志到控制台?因此,每次链接错误都会出现时,它都应在与之关联的索引号之后记录错误。例如:

0
错误此处https://test123.com/ergaergrhaerha0
1
2
2
3
错误此处https://test123.com/ergaergrhaerha333
...
完成!

      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) {
  //...
 }
 //...

最新更新