當您將多個來源 Observable 傳遞給 Amb 時,它將傳遞這些 Observable 中恰好一個的發射和通知:第一個發送通知給 Amb 的 Observable,透過發射一個項目或發送一個 onError
或 onCompleted
通知。Amb 將忽略並捨棄所有其他來源 Observable 的發射和通知。
待定
待定
RxGroovy 將此運算子實作為 amb
。它最多可接受九個 Observables 作為個別參數,或接受一個 Observables 的單一 Iterable。此運算子也有一個實例版本 ambWith
,因此,舉例來說,您也可以寫 o1.ambWith(o2)
,而不是寫 Observable.amb(o1,o2)
,效果相同。
預設情況下,此運算子不在任何特定的 Scheduler 上運作。
amb(Iterable)
amb(Observable,Observable)
(也有接受最多九個 Observable 參數的版本)ambWith(Observable)
RxJava 1.x 將此運算子實作為 amb
。它最多可接受九個 Observables 作為個別參數,或接受一個 Observables 的單一 Iterable。此運算子也有一個實例版本 ambWith
,因此,舉例來說,您也可以寫 o1.ambWith(o2)
,而不是寫 Observable.amb(o1,o2)
,效果相同。
預設情況下,此運算子不在任何特定的 Scheduler 上運作。
amb(Iterable)
amb(Observable,Observable)
(也有接受最多九個 Observable 參數的版本)ambWith(Observable)
RxJava 2.x 將此運算子實作為 amb
。它接受一個 Observables 的 Iterable 作為其參數。您也可以使用 ambArray
來傳遞一個 Observables 的陣列。此運算子也有一個實例版本 ambWith
,因此,舉例來說,您也可以寫 o1.ambWith(o2)
,而不是寫 Observable.ambArray([o1,o2])
,效果相同。
預設情況下,此運算子不在任何特定的 Scheduler 上運作。
amb(Iterable)
ambArray(Iterable)
ambWith(Observable)
RxJS 將此運算子實作為 amb
。它接受可變數量的參數,這些參數可以是 Observables 或 Promises(或兩者的組合)。
/* 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!
待定
待定
待定
待定