У меня есть следующий код для получения всех моих сообщений
` @Action(actions.FetchPosts)
fetchAll(ctx: StateContext<PostStateModel>){
return this.postService.fetchPosts().pipe(tap((postsResults) => {
const state = ctx.getState();
ctx.patchState({
...state,
posts: [
...postsResults
],
})
}),
mergeMap(() => {
console.log("Inside of mergeMap")
return ctx.dispatch(new actions.FetchPostsSuccess())
}),
catchError(err =>
{
console.log("Inside of catchError")
return ctx.dispatch(new actions.FetchPostsFail(err))
}
))
}`
Это работает, однако я хочу выполнить еще одну отправку, прежде чем звонить в мою почтовую службу. Как лучше всего использовать асинхронное программирование, чтобы убедиться, что я сначала отправлю действие start, которое установит для свойства загрузки значение true, а затем убедитесь, что я вызываю только успешный вызов только после успешного возврата запроса.
Кроме того, следуя документации ngxs, я использую mergeMap (), который, похоже, выполняет свою работу. Мне любопытно, однако, postService, который возвращает массив сообщений, возвращает один наблюдаемый или один наблюдаемый объект, который затем испускает несколько наблюдаемых более высокого порядка (внутренние наблюдаемые)?