У меня есть два метода API:
POST
/ article / {id} / revisions GET
/ article / {id}
Результатом публикации ревизий является документ ревизии, который включает в себя изменения до / после объекта статьи.Это не объект статьи.
Они соответствуют следующим методам в моем приложении Angular:
this.endpoint.articles.revise(article.id, revisionParams);
this.endpoint.articles.getById(article.id);
Которые возвращают Observable<ArticleRevision>
и Observable<Article>
соответственно.
Когда я пересматриваю документ, я хочу получить обновленную копию документа, в которой есть мои изменения.На данный момент я могу добиться этого, выполнив следующее:
private reviseArticle(article: article, revisionParams: ArticleRevisionParams): Observable<Article> {
return this.endpoint.articles.revise(article.id, revisionParams)
.expand(r => this.endpoint.articles.getById(article.id))
.pipe(take(2))
.last();
}
Из описания или expand
, похоже, что этот метод больше взломать, чемРешение:
Рекурсивный вызов предоставленной функции.
Я пытался использовать concat
, но обнаружил, что для этого требуются наблюдаемые того же типа, что было немногопокажи стопор в моем случае.Неправильно ли я использую expand
, или есть лучший (более правильный) способ последовательного связывания разнородных наблюдаемых?
PS Я пометил Angular в случае, если связанный с Angular ароматизатор rxjs немного отличается от обычногоrxjs.Не стесняйтесь удалить его, если он не принадлежит.