Я пытаюсь справиться с ситуацией, когда подписки на http-вызовы вложены в итерации.
1) В первой возвращаемой наблюдаемой я получу объект URLS
2) Мне нужноперебрать эти URL-адреса и сделать http-вызовы по этим URls
3) Тот же случай на третьем шаге, я получу URL-адреса и сделаю то же самое, что и во втором
4) наконец данныекоторый я получаю с третьего шага, мне нужно нажать на конечный объект.
let finaldata = [];
this.service1.getstep1Data().subscribe((data1) => {
// data1 = { name : 'abc', urls : ['http://url1.com','http://url2.com',........,'http://urlz.com']};
data1.urls.foreach((url) => {
this.service2.getstep2Data(url).subscribe((data2) => {
// data2 = { name : 'abc', urls : ['http://url1.com','http://url2.com',........,'http://urlz.com']};
data2.urls.foreach((url) => {
this.service3.getfinalData(url).subscribe((data) => {
// data = ["one","two"...."xyz"]
finaldata.push(data[0]);
})
})
})
})
})
Теперь проблема заключается в обработке асинхронных вызовов в итерациях, которые не будут ждать друг друга.
Я хочудождитесь завершения всех асинхронных вызовов на втором шаге, а затем выполните третий шаг, в противном случае у нас нет URL-адресов для третьего шага, чтобы сделать остальные вызовы
Я знаю, что повторение асинхронных вызовов не является хорошей практикой.
Может ли кто-нибудь помочь мне с лучшей практикой для этого.
************ Заранее спасибо *************