Я начал выполнять функциональные цепи с помощью RxJs 5 и действительно наслаждался им. Я заметил шаблон, с которым я часто сталкиваюсь, но не смог найти способ его решить с помощью методов RxJs.Rxjs - Слияние асинхронного ответа с ответом синхронизации
я некоторые асинхронные данные использование value
и объединить их с самим значением.
Позвольте мне показать вам код:
Rx.Observable.fromPromise(somePromise) // doesn't really matter
.flatMap(value => { // this is the original value I have
const promise = aFunctionThatReturnsPromise(value);
return Promise.all([promise, value])); // I created a promise using this value, but I still want to keep value as well
})
.map(([promiseValue, originalValue]) => ({ // I merge new produced values with the value itself and get rid of array.
value1: promiseValue.value1,
value2: promiseValue.value2
originalValue: originalValue
}))
// ...rest of the chain...
Как можно видеть, это означает, чтобы создать объединенный обещание с Promise.all
просто держать value
и фазы очистки с map
, чтобы сделать вещи лучше для следующих частей цепи.
Есть ли встроенный Конструкция RxJs для этого типа рисунка? Или есть другой подход, который дает более понятное решение?
Почему наблюдаемые здесь? Почему бы вам просто не использовать обещания? –
@TamasHegedus в примере кода, мне действительно не нужно наблюдать. Но для демонстрации это довольно упрощено, а реальный код у меня есть, мне нужны наблюдаемые. :-) –