我想获取console.log结果:["abc", 122, 123]
,zip/combineLatest操作一般可以满足我的需求。
但是,当 time 或 time2 没有任何值时,例如:
var time = Rx.Observable.of();
,则 console.log 结果不是 ["abc", 122, 123]
。
那么如何解决呢?
var time = Rx.Observable.of(['abc']);
var time2= Rx.Observable.of([122,123]);
Rx.Observable.zip(time,time2
, (a, b) => [...a, ...b])
.subscribe(data => console.log("data:",data));
Rx.Observable.merge(time,time2).subscribe(data => {
console.log("data-M:",data);
})
Rx.Observable.combineLatest(time,time2
, (a,b) => {return a.concat(b)})
.subscribe(data => console.log("data:",data));
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<script src="https://unpkg.com/@reactivex/rxjs@5.0.3/dist/global/Rx.js"></script>
</body>
</html>
最佳答案
这是因为 Rx.Observable.of()
创建了一个空的 observable。 combineLatest
和 zip
当它们都有值时都会触发。这就是为什么它永远不会着火。 Rx.Observable.of('')
可以工作。
关于javascript - RXJS mixLatest/zip 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43674334/