concatMap
(и другие наблюдаемые операторы более высокого порядка) принимают дополнительную функцию селектора результата ( Примечание: это устарело ), которая принимает аргументы выходного значения и входного значения.Это позволяет вам передавать оба потока (например, в виде массива):
onErrorResumeNext(from(ids))
.pipe(
delay(10),
concatMap(id => get(id), (res, id) => ([res, id]))
)
.subscribe(([res, id]) => {
// note that `return` does nothing here
if (res == emptydata) return id
});
Если get
является наблюдаемым, вы также можете вернуть id
в контексте, где у вас есть доступ к нему:
concatMap(id => get(id).pipe(
map(res => res != emptydata ? res : id)
)
Если get
равен , а не массивом, вы можете использовать функцию создания Observable, такую как from
, чтобы превратить его в массив.