大佬教程收集整理的这篇文章主要介绍了angular – 如何从Observable.from中收集发射值数组?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
return Observable.from(input_array) .concatMap((item)=>{ //this part emits an Observable.of<String> for each item in the input_array }) .scan((output_array:string[],each_item_output_array:string)=>{ return output_array.push(each_item_output_array) ; });
但显然这是错误的,扫描会破坏concatMap中的代码,所以我想知道如何从运算符中收集observable中每个项的输出数组?
scan
的调用中,您没有为累加器指定种子.在那种情况下,第一个值用作种子.例如:
Rx.observable .from(["a","b","c"]) .scan((acc,value) => acc + value) .subscribe(value => console.log(value));
<script src="https://unpkg.com/rxjs@5/bundles/Rx.min.js"></script>
在您的代码段中,第一个值不是数组,因此您无法调用push.要将值累积到数组中,可以指定如下的数组种子:
Rx.observable .from(["a","c"]) .concatMap(value => Rx.observable.of(value)) .scan((acc,value) => { acc.push(value); return acc; },[]) // Note that an empty array is use as the seed .subscribe(value => console.log(JSON.Stringify(value)));
<script src="https://unpkg.com/rxjs@5/bundles/Rx.min.js"></script>
虽然,对于某些用例,最好不要改变数组:
Rx.observable .from(["a",value) => [...acc,value],[]) .subscribe(value => console.log(JSON.Stringify(value)));
<script src="https://unpkg.com/rxjs@5/bundles/Rx.min.js"></script>
请注意,扫描会为其接收的每个值发出一个数组.如果您只想在observable完成时发出一个数组,则可以使用toArray运算符:
Rx.observable .from(["a","c"]) .concatMap(value => Rx.observable.of(value)) .toArray() .subscribe(value => console.log(JSON.Stringify(value)));
<script src="https://unpkg.com/rxjs@5/bundles/Rx.min.js"></script>
以上是大佬教程为你收集整理的angular – 如何从Observable.from中收集发射值数组?全部内容,希望文章能够帮你解决angular – 如何从Observable.from中收集发射值数组?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。