gpt4 book ai didi

redux-observable 如何保持传递有效载荷

转载 作者:行者123 更新时间:2023-12-04 02:06:46 25 4
gpt4 key购买 nike

我如何才能继续将有效负载传递给我的其他运算符(operator)?

例如:

login = (action$: ActionsObservable) => {
return action$.ofType(SessionActions.LOGIN_USER)
.mergeMap(({payload}) => {
return this.http.post(`${BASE_URL}/auth/login`, payload)
.map(result => ({
type: SessionActions.LOGIN_USER_SUCCESS,
payload: result.json().meta
}))
.catch(error => Observable.of({
type: SessionActions.LOGIN_USER_ERROR
}));
});
}

如何将负载结果传递给 map 运算符(operator)?

最佳答案

payload 的值在 .map 中可用,因为函数是用 payload in scope 定义的.您可以按照当前编写的方式在该函数中使用 payload:

.map(result => ({
type: SessionActions.LOGIN_USER_SUCCESS,
payload: {
one: result.json().meta,
two: payload /* this is in parent scope from mergeMap */
}
}))

但是,如果你想让它更明确,一种方法是使用 zip结合可观察量:

login = (action$: ActionsObservable) => {
return action$.ofType(SessionActions.LOGIN_USER)
.mergeMap(({payload}) => {
return Rx.Observable.zip(
Rx.Observable.of(payload),
this.http.post(`${BASE_URL}/auth/login`, payload),
(payload, result) => { payload, result }
)
.map({ payload, result} => ({
type: SessionActions.LOGIN_USER_SUCCESS,
payload: result.json().meta
}))
.catch(error => Observable.of({
type: SessionActions.LOGIN_USER_ERROR
}));
});
}

Zip 允许您组合多个可观察对象并提供一个选择器函数来形成结果对象。根据您的意图,combineLatest可能适合您对类似问题的需求,当您希望任何源发出时每个源的最新值。

关于redux-observable 如何保持传递有效载荷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42676683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com