从设计和总体代码质量上,您会建议对满足某些条件的数组中结果存在的哪些检测建议?假设还可以查询空数组,并且我们希望一次访问所有满足条件的元素,那么下面的代码似乎可靠吗?
其他琐事:
*代码正在处理HTTP请求,因此可以保证此可观察性将完成
Rx.Observable.from([] /*or [1,2,3], or [1,2,50]*/)
.filter(v => v > 20)
.toArray()
.filter(a => a.length > 0)
.defaultIfEmpty([])
.subscribe(v => {
if (v.length === 0) {console.log('no results')}
else { console.log('Results present', v) }
}, (e) => {console.log(e)}, () => {console.log('done')})
-编辑-
必须再次调用filter
,因为成功完成空数组[]
可以绕过defaultIfEmpty
运算符
答案 0 :(得分:1)
您可以简化代码:toArray
在可观察完成时返回一个空列表,即使没有收到任何元素。
Rx.Observable.from([] /*or [1,2,3], or [1,2,50]*/)
.filter(v => v > 20)
.toArray() // will return [] when the observable finishes and filter discards all your elements
.subscribe(v => {
if (v.length === 0) {console.log('no results')}
else { console.log('Results present', v) }
}, (e) => {console.log(e)}, () => {console.log('done')}
)