ngrx效果-两个具有相同效果的http api

问题描述 投票:1回答:1

我具有使用update api更新对象的一部分的以下效果(此api返回该对象的id),然后使用findById api获得整个对象,并将结果传递给api更新作为参数,问题是我第一次执行更新时,findById api知道更新已完成,但返回了没有更新的对象

@Effect()
updateScopeCoverage$ = this.actions$.pipe(
    ofType<networksActions.PatchScopeCoverage>(networksActions.NetworkActionTypes.PATCH_SCOPE_COVERAGE),
    map(action => action.payload),
    exhaustMap(scopeCoverage => this.apiNetwork.update({ updateScopeCoverageRequest: scopeCoverage }).pipe(
        switchMap(id => this.apiNetwork.findById({ externalId: id }).pipe(
            map((network: Network) => new networksActions.PatchSuccess({
                id: network.externalId,
                changes: network
            })),
        )),
        catchError(err => {
            alert(err.message);
            return of(new networksActions.Failure({ concern: 'PATCH', error: err }));
        })
    ))
);


findById(args: { externalId: string }): Observable<models.Network> {
        const path = `/networks/v1.0/${args.externalId}`;
        return this.http.get<models.Network>(`${this.domain}${path}`);
}
angular typescript ngrx ngrx-store ngrx-effects
1个回答
0
投票

如果我理解正确-后端返回旧数据,对吗?因为效果看起来不错。它发送一个更新请求,等待响应,然后发送findById,等待,然后分派PatchSuccess操作。顺序正确。我会console.log什么后端返回,如果它返回旧数据-这意味着后端的缓存或复制。例如,尝试将delay(1000)放在switchMap(id => findById之前,如果可以,则100%出现后端问题。

© www.soinside.com 2019 - 2024. All rights reserved.