Я сейчас использую flatMap
, потому что он может обрабатывать асинхронный код синхронно (как один за другим со значениями из предыдущего результата), но я не знаю, как это происходит. Документация, похоже, не объясняет, что это поведение является частью оператора.
На RxJS документ flatMap
определяется как:
Проецирует каждое исходное значение в Observable, который объединен в
Выход Наблюдаемый.
Мне нужно обработать комбинацию кода observable
, promise
и synchronous
в моей трубе. В большинстве случаев данные по конвейеру зависят от предшественника:
from(
// asyncrhonously fetch data from server
fetchDataAsync(credentials) // returns an Observable
).pipe(
flatMap((data) => {
// process the data with a promise
return from(processDataAsync(data))
}),
flatMap((data) => {
// sanitize the data with synchronous fn
return of(sanitizeDataSync(data))
}),
flatMap((data) => {
// store the data in local storage with a promise
return from(storeDataAsync(data))
})
)
flatMap
работает, но я не знаю, как и почему. Как я могу найти это поведение в других операторах?
По сути, я хочу воспользоваться наблюдаемыми потоками, которые работают как ваша обычная асинхронная функция. Что такое RX-way
этого?
async function fn() {
// asyncrhonously fetch data from server
const fetched = await fetchDataAsync(credentials).toPromise()
// process the data with a promise
const processed = await processDataAsync(fetched)
// sanitize the data with synchronous fn
const santized = sanitizeDataSync(processed)
// store the data in local storage with a promise
return await storeDataAsync(santized)
}