当您将多个源 Observable 传递给 Amb 时,它将传递来自这些 Observable 中的其中一个的发出和通知:第一个向 Amb 发送通知的 Observable,无论通过发出一个项目还是发送 onError
或 onCompleted
通知。Amb 将忽略并丢弃所有其他源 Observable 的发出和通知。
待定
待定
RxGroovy 将此操作符实现为 amb
。它最多可以接受九个 Observable 作为单独的参数,或者接受一个 Observable 的可迭代对象。操作符还有一个实例版本 ambWith
,因此,例如,您可以编写 o1.ambWith(o2)
来获得与 Observable.amb(o1,o2)
相同的效果。
默认情况下,此操作符不会在任何特定的 调度器 上运行。
amb(Iterable)
amb(Observable,Observable)
(还有接受最多九个 Observable 参数的版本)ambWith(Observable)
RxJava 1.x 将此操作符实现为 amb
。它最多可以接受九个 Observable 作为单独的参数,或者接受一个 Observable 的可迭代对象。操作符还有一个实例版本 ambWith
,因此,例如,您可以编写 o1.ambWith(o2)
来获得与 Observable.amb(o1,o2)
相同的效果。
默认情况下,此操作符不会在任何特定的 调度器 上运行。
amb(Iterable)
amb(Observable,Observable)
(还有接受最多九个 Observable 参数的版本)ambWith(Observable)
RxJava 2.x 将此操作符实现为 amb
。它接受一个 Observable 的可迭代对象作为参数。您还可以使用 ambArray
传递一个 Observable 数组。操作符还有一个实例版本 ambWith
,因此,例如,您可以编写 o1.ambWith(o2)
来获得与 Observable.ambArray([o1,o2])
相同的效果。
默认情况下,此操作符不会在任何特定的 调度器 上运行。
amb(Iterable)
ambArray(Iterable)
ambWith(Observable)
RxJS 将此操作符实现为 amb
。它接受可变数量的参数,这些参数可以是 Observable 或 Promise(或两者的组合)。
/* Using Observable sequences */ var source = Rx.Observable.amb( Rx.Observable.timer(500).select(function () { return 'foo'; }), Rx.Observable.timer(200).select(function () { return 'bar'; }) ); var subscription = source.subscribe( function (x) { console.log('Next: ' + x); }, function (err) { console.log('Error: ' + err); }, function () { console.log('Completed'); });
Next: bar Completed
/* Using Promises and Observables */ var source = Rx.Observable.amb( RSVP.Promise.resolve('foo') Rx.Observable.timer(200).select(function () { return 'bar'; }) ); var subscription = source.subscribe( function (x) { console.log('Next: ' + x); }, function (err) { console.log('Error: ' + err); }, function () { console.log('Completed'); });
Next: foo Completed
待定
RxPHP 将此操作符实现为 race
。
传播第一个响应的 Observable 序列。也称为 "amb"。
//from https://github.com/ReactiveX/RxPHP/blob/master/demo/race/race.php $source = Rx\Observable::race( [ Rx\Observable::timer(500)->map(function () { return 'foo'; }), Rx\Observable::timer(200)->map(function () { return 'bar'; }) ] ); $source->subscribe($stdoutObserver);
Next value: bar Complete!
待定
待定
待定
待定