У меня есть асинхронная функция ожидания, которая обрабатывает элементы не по порядку в цикле. Как я могу проверить каждый элемент в массиве, прежде чем сделать! журналы для консоли? Таким образом, каждый раз, когда ссылка выдает ошибку, она должна регистрировать ошибку после номера индекса, с которым она связана. Например:
0
ЗДЕСЬ ОШИБКА https://test123.com/ergaergrhaerha0
1
2
3
ЗДЕСЬ ОШИБКА https://test123.com/ergaerrhaerha3
...
готово!
processArray(ftJsonBySeqAssets);
async function processArray(arr) {
for (i in arr) {
console.info(i)
await https.get(arr[i].image_link, async (res) => {
await console.info(res.statusCode, arr[i].image_link)
if (res.statusCode === 404) {
console.info('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.info(res.statusCode, arr[i].link)
if (res.statusCode === 404) {
console.info('ERROR HERE', arr[i].link)
audience.error.link.push(arr[i].link)
audience.error.count++
}
});
}
console.info('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
Я не думаю, что это сработает, вам нужно создать поставщика и создать обещание, которое разрешается или отклоняется на основе возврата обратного вызова.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Похоже, что https.req не возвращает обещание, поэтому вам нужно создать его самостоятельно, чтобы затем дождаться этого:
const res = await new Promise(resolve => https.get(arr[i].link, resolve));
if (res.statusCode === 404) {
//...
}
//...
Итак, вы
awaitсоздаете функцию, которой передаете обратный вызов? Как вы предполагаете, что именно делаетawait?