Для каждого внутреннего Observable нам нужен другой оператор сглаживания.
Таким образом, будет работать что-то вроде этого:
getCount().pipe(
mergeMap(count => range(0, Math.ceil(count / limit))),
mergeMap(offset => getDevices(offset, limit)),
mergeAll(),
toArray()
).subscribe(res => {
console.log('result', JSON.stringify(res));
});
Первый mergeMap
сглаживает внутренний range
Observable. Второй mergeMap
сглаживает getDevices
, который, как я полагаю, возвращает Observable.
mergeAll()
объединяет все отдельные значения, которые являются объектами.
The toArray()
затем складывает все объекты в один массив.
Результат:
result
[{"name":"dev-1"},{"name":"dev-2"},{"name":"dev-3"},{"name":"dev-4"},{"name":"dev-5"},{"name":"dev-6"},{"name":"dev-7"},{"name":"dev-8"},{"name":"dev-9"},{"name":"dev-10"},{"name":"dev-11"},{"name":"dev-12"},{"name":"dev-13"},{"name":"dev-14"},{"name":"dev-15"},{"name":"dev-16"},{"name":"dev-17"},{"name":"dev-18"},{"name":"dev-19"},{"name":"dev-20"}]
Надеюсь, это поможет.