Как объединить в 1 объект "родительский" (внешний) и "дочерний" (вложенный) запрос на выборку

1) У меня есть список (массив) URL-адресов для получения UserInfo.

const userURLs = [
    'https://jsonplaceholder.typicode.com/users/1',
    'https://jsonplaceholder.typicode.com/users/2',
    'https://jsonplaceholder.typicode.com/users/3'
];

2) После загрузки UserInfo (не все загружены - ни один из пользователей) мне нужно получить некоторые детали ( https://jsonplaceholder.typicode.com/todos?userId=$ {user.id})

3) Итак, желаемый результат внутри подписки:

[{ ...userInfo, todo: {...todo} }, { ...userInfo, todo: {...todo} }, { ...userInfo, todo: {...todo} }]

У меня есть обещающее и очень элегантное решение для асинхронного ожидания. Но только начал изучать rxjs. У меня есть следующий код, но я не знаю, как объединить userInfo + todo в один объект без Observable.create().

 rxjs.of(userURLs)
    .pipe(
        rxjs.operators.mergeAll(),
        rxjs.operators.mergeMap(url => fetch(url)),
        rxjs.operators.mergeMap(response => response.json()),
        rxjs.operators.mergeMap(user => fetch(`https://jsonplaceholder.typicode.com/todos?userId=${user.id}`)),
        rxjs.operators.mergeMap(response => response.json())
    )
    .subscribe((combinedUsersAndTodosArray) => {
        console.log(combinedUsersAndTodosArray); // only todos are here
    });

Большое спасибо!!!

0 ответов

Другие вопросы по тегам