gpt4 book ai didi

javascript - 如果有效负载长度 < 1,则返回不同的可观察值

转载 作者:行者123 更新时间:2023-12-01 03:29:38 25 4
gpt4 key购买 nike

我有这个史诗:

export const fetchProductsFulfilledEpic = action$ =>
action$.ofType(FETCH_PRODUCTS_FULFILLED)
.mergeMap(action => {
return Observable.of(
updateSearchResults(action.payload),
toggleMenu(),
updateRegion(action.payload)
).catch(error => Observable.of(
fetchProductsRejected(error))
)
})

我只想返回

updateSearchResults(action.payload),
toggleMenu(),
updateRegion(action.payload)

如果action.payload.products.length大于0,否则显示警报。

尝试:

export const fetchProductsFulfilledEpic = action$ =>
action$.ofType(FETCH_PRODUCTS_FULFILLED)
.mergeMap(action => {
Observable.if(() => action.payload.products.length > 0,
Observable.of(
updateSearchResults(action.payload),
toggleMenu(),
updateRegion(action.payload)
), Observable.of(...enter alert observable here...)
).catch(error => Observable.of(
fetchProductsRejected(error))
)
})

出现错误:

You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.

如何返回Observable.of上面,并返回一个可观察的 showAlertDialog如果action.payload.products.length < 1

最佳答案

mergeMap 中的普通条件怎么样?

export const fetchProductsFulfilledEpic = action$ =>
action$.ofType(FETCH_PRODUCTS_FULFILLED)
.mergeMap(action => {
if (action.payload.products.length > 0) {
return Observable.of(
updateSearchResults(action.payload),
toggleMenu(),
updateRegion(action.payload)
);
} else {
return Observable.of(
showAlertDialog()
);
}
})
<小时/>

顺便说一句,您的 catch 目前是无关紧要的,因为 Observable.of 永远不会抛出错误:

.mergeMap(action => {
return Observable.of(
updateSearchResults(action.payload),
toggleMenu(),
updateRegion(action.payload)
// this is catching errors on the above Observable but
// this Observable will never ever throw errors
).catch(error => Observable.of(
fetchProductsRejected(error)
))
})

关于javascript - 如果有效负载长度 < 1,则返回不同的可观察值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44599854/

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