Egi*_*sen 3 reactive-programming reactive-extensions-js rxjs
例1:
var obsNumber = /* observable that produce numbers */;
var obsText1 = /* observable that produce text */;
var obsText2 = /* observable that produce text */;
var obsContext = /* IF obsNumber < 5 THEN obsText1 ELSE obsText2 */;
Run Code Online (Sandbox Code Playgroud)
obsContext是一个可观察的,它将从obsText1或返回数据obsText2,具体取决于的值obsNumber.
例2:
var arrOfObservables = /* an array of observables */;
var obsNumber = /* observable that produce numbers */;
var obsSelect = /* arrOfObservables[obsNumber] */;
Run Code Online (Sandbox Code Playgroud)
obsSelect是一个可观察的,它将从arrOfObservables由所产生的值确定的数组中返回所选observable的数据obsNumber.
我无法弄清楚如何使用RxJS指定此行为.在我看来,我需要能够在多个observable之间动态订阅/取消订阅.
如何使用RxJS使这两个示例工作?
用途switch:
将可观察的可观察序列序列转换为可观察序列,仅从最近的可观察序列产生值.
例1
var obsNumber,
obsText1,
obsText2;
obsNumber = Rx.Observable.interval(500).take(10);
obsText1 = Rx.Observable.return('a');
obsText2 = Rx.Observable.return('b');
obsNumber
.do(function (x) {
console.log('x: ' + x);
})
.map(function (x) {
return x < 5 ? obsText1 : obsText2;
})
.switch()
.subscribe(function (context) {
console.log('context: ' + context);
});Run Code Online (Sandbox Code Playgroud)
<script src='https://rawgit.com/Reactive-Extensions/RxJS/v.2.5.3/dist/rx.all.js'></script>Run Code Online (Sandbox Code Playgroud)
例2
var obsNumber,
arrOfObservables;
obsNumber = Rx.Observable.range(0, 3);
arrOfObservables = [
Rx.Observable.return('a'),
Rx.Observable.return('b'),
Rx.Observable.return('c')
];
obsNumber
.do(function (x) {
console.log('x: ' + x);
})
.map(function (x) {
return arrOfObservables[x];
})
.switch()
.subscribe(function (context) {
console.log('context: ' + context);
});Run Code Online (Sandbox Code Playgroud)
<script src='https://rawgit.com/Reactive-Extensions/RxJS/v.2.5.3/dist/rx.all.js'></script>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
563 次 |
| 最近记录: |