Average 运算符作用于发出数字(或可以评估为数字的项目)的可观察对象,并发出单个值:源可观察对象发出的所有数字的平均值。
待定
在 RxGroovy 中,此运算符不在 ReactiveX 核心库中,而是属于独立的 rxjava-math 模块,在该模块中,它通过四个特定类型的运算符实现:averageDouble、averageFloat、averageInteger 和 averageLong。以下示例展示了这些运算符的工作原理。
def myObservable = Observable.create({ aSubscriber ->
if(false == aSubscriber.isUnsubscribed()) aSubscriber.onNext(4);
if(false == aSubscriber.isUnsubscribed()) aSubscriber.onNext(3);
if(false == aSubscriber.isUnsubscribed()) aSubscriber.onNext(2);
if(false == aSubscriber.isUnsubscribed()) aSubscriber.onNext(1);
if(false == aSubscriber.isUnsubscribed()) aSubscriber.onCompleted();
});
Observable.averageInteger(myObservable).subscribe(
{ println(it); }, // onNext
{ println("Error encountered"); }, // onError
{ println("Sequence complete"); } // onCompleted
);2 Sequence complete
您也可以对应用于每个项目的函数的结果进行平均,而不是对项目本身进行平均,如上图所示,它发出源可观察对象发出的图形的平均边数。
如果源可观察对象没有发出任何项目,此运算符将抛出 IllegalArgumentException 异常。
此运算符不在 RxJava 核心库中,而是属于独立的 rxjava-math 模块,在该模块中,它通过四个特定类型的运算符实现:averageDouble、averageFloat、averageInteger 和 averageLong。
您也可以对应用于每个项目的函数的结果进行平均,而不是对项目本身进行平均,如上图所示,它发出源可观察对象发出的图形的平均边数。
如果源可观察对象没有发出任何项目,此运算符将抛出 IllegalArgumentException 异常。
RxJS 将此运算符实现为 average。以下代码示例展示了如何使用它
var source = Rx.Observable.range(0, 9).average();
var subscription = source.subscribe(
function (x) {
console.log('Next: ' + x);
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
});Next: 4 Completed
您也可以对应用于每个项目的函数的结果进行平均,而不是对项目本身进行平均,如上图所示,它发出源可观察对象发出的图形的平均边数。
var arr = [
{ value: 1 },
{ value: 2 },
{ value: 3 }
];
var source = Rx.Observable.fromArray(arr).average(function (x) {
return x.value;
});
var subscription = source.subscribe(
function (x) {
console.log('Next: ' + x);
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
});Next: 2 Completed
average 位于以下发行版中
rx.all.jsrx.all.compat.jsrx.aggregates.js它需要以下之一
rx.jsrx.compat.jsrx.lite.jsrx.lite.compat.jsRxPHP 将此运算符实现为 average。
计算可观察序列值的平均值。
//from https://github.com/ReactiveX/RxPHP/blob/master/demo/average/average.php $source = Rx\Observable::range(0, 9)->average(); $subscription = $source->subscribe($stdoutObserver);
Next value: 4
Complete!
待定
待定
待定