![](/img/trans.png)
[英]How does Mocha execute the 'it' calls? How to execute tests synchronously?
[英]How does flatMap execute code synchronously?
我現在正在使用flatMap
因為它可以同步處理異步代碼(如與先前結果中的值一一對應),但是我不知道它是如何做到的。 該文檔似乎並未解釋此行為是操作員的一部分。
在RxJS文檔上, flatMap
定義為:
將每個源值投影到一個Observable,將其合並到輸出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
做的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)
}
flatMap
運算符不會同步執行代碼:每次接收到類型為Observable
的事件時,它都會訂閱它並在返回的相同Observable
發出其事件。 順便說一下,它在最新版本中已重命名為mergeMap
,從而更好地描述了其行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.